Добрый день!
Я недавно начал познавать WebGL и у меня накопилось несколько вопросов.
Есть стандартная процедура заполнения веринного буфера на WebGL:
var squareVertexPositionBuffer; //JavaScript объект для буффера
function initBuffers() {
squareVertexPositionBuffer = gl.createBuffer(); //создание буффера
gl.bindBuffer(gl.ARRAY_BUFFER, squareVertexPositionBuffer);
//создание массива вершын
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(0, 0, gl.viewportWidth, gl.viewportHeight);
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
mat4.perspective(45, gl.viewportWidth / gl.viewportHeight, 0.1, 100.0, pMatrix); //Установка перспективы обзора
mat4.identity(mvMatrix); //Чёто делают с model view матрицей
gl.bindBuffer(gl.ARRAY_BUFFER, squareVertexPositionBuffer);
//Загрузка вершынного буфера в шейдерную програму
gl.vertexAttribPointer(shaderProgram.vertexPositionAttribute, squareVertexPositionBuffer.itemSize, gl.FLOAT, false, 0, 0);
setMatrixUniforms(); //Обновления всех матриц
gl.drawArrays(gl.TRIANGLE_STRIP, 0, squareVertexPositionBuffer.numItems); //Рисование нашего вершынного буфера
}
Постановка задачи:
Требуетса создать оч большое количество квадратиков не связаных между собой (квад) с возможностю трансформировать, а точнее вращать каждый квадратик относительно положения камеры (то есть спрайты)...
А вот вопросы будут состоять в следующем:
- Возможно ли создать все ето большое количество квадов в одном вершинном буфере?
- Будит ли потом возможнось вращать отдельный квад относительно камеры?
- Сильна ли будет разница в быстроте отрисовки большого количества квадов между однобуферной и многобуферной реализацией?
Пока что ето все...
P.S. Вопросиы мои возможно немного тупые, но ответ на них может дать только хорошый спец по графике...