Показать сообщение отдельно
Старый 31.05.2011, 21:12   #1
ІГРОГРАЙКО
ПроЭктировщик
 
Аватар для ІГРОГРАЙКО
 
Регистрация: 20.06.2009
Адрес: Україна
Сообщений: 152
Написано 10 полезных сообщений
(для 24 пользователей)
Хорошо Вершинный буфер, создание и опирации с ним (WebGL)

Добрый день!

Я недавно начал познавать WebGL и у меня накопилось несколько вопросов.
Есть стандартная процедура заполнения веринного буфера на WebGL:
var squareVertexPositionBuffer;      //JavaScript объект для буффера
    
function initBuffers() {
        
squareVertexPositionBuffer gl.createBuffer();   //создание буффера
        
gl.bindBuffer(gl.ARRAY_BUFFERsquareVertexPositionBuffer);

        
//создание массива вершын
        
vertices = [
             
1.0,  1.0,  0.0,
            -
1.0,  1.0,  0.0,
             
1.0, -1.0,  0.0,
            -
1.0, -1.0,  0.0
        
];
        
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);    //Заполнение буффера
        //Дополнитильные переменные объекта
        
squareVertexPositionBuffer.itemSize 3;
        
squareVertexPositionBuffer.numItems 4;
    } 
Ета функция создает квадрат и вносит его в память...
Дале отрисовка етого же квадратика:
function drawScene() {
        
gl.viewport(00gl.viewportWidthgl.viewportHeight);
        
gl.clear(gl.COLOR_BUFFER_BIT gl.DEPTH_BUFFER_BIT);

        
mat4.perspective(45gl.viewportWidth gl.viewportHeight0.1100.0pMatrix);    //Установка перспективы обзора
        
mat4.identity(mvMatrix);   //Чёто делают с model view матрицей

        
gl.bindBuffer(gl.ARRAY_BUFFERsquareVertexPositionBuffer);
        
//Загрузка вершынного буфера в шейдерную програму
        
gl.vertexAttribPointer(shaderProgram.vertexPositionAttributesquareVertexPositionBuffer.itemSizegl.FLOATfalse00);
        
setMatrixUniforms();   //Обновления всех матриц
        
gl.drawArrays(gl.TRIANGLE_STRIP0squareVertexPositionBuffer.numItems);     //Рисование нашего вершынного буфера
    

Постановка задачи:
Требуетса создать оч большое количество квадратиков не связаных между собой (квад) с возможностю трансформировать, а точнее вращать каждый квадратик относительно положения камеры (то есть спрайты)...
А вот вопросы будут состоять в следующем:
  1. Возможно ли создать все ето большое количество квадов в одном вершинном буфере?
  2. Будит ли потом возможнось вращать отдельный квад относительно камеры?
  3. Сильна ли будет разница в быстроте отрисовки большого количества квадов между однобуферной и многобуферной реализацией?
Пока что ето все...

P.S. Вопросиы мои возможно немного тупые, но ответ на них может дать только хорошый спец по графике...
__________________
Blitz3D, XNA, WebGL, OpenGL, Unity3D
PC: ASUS A55VM Core i3 (2.4Ghz), 6 Gb RAM, Nvidia GF 630M GT 2Gb
(Offline)
 
Ответить с цитированием