为了加快 WebGL 中许多几乎相同对象的显示速度,我尝试(天真地,我猜)重用缓冲区内容。在每个对象的绘图例程中,我有(有些简化):
if (! dataBuffered) {
dataBuffered = true;
:
: gl stuff here: texture loading, buffer binding and filling
:
}
// set projection and model-view matrices
gl.uniformMatrix4fv (shaderProgram.uPMatrix, false, pMatrix);
gl.uniformMatrix4fv (shaderProgram.uMVMatrix, false, mvMatrix);
// draw rectangle filled with texture
gl.drawArrays(gl.TRIANGLE_STRIP, 0, starVertexPositionBuffer.numItems);
我的想法是纹理、顶点和纹理坐标缓冲区是相同的,但是模型视图矩阵会发生变化(不同位置的相同对象)。但是,唉,什么都没有出现。当我评论 时dataBuffered = true
,它是可见的。
所以我的问题是,是否drawArray()
丢弃或清空缓冲区?还有什么事情发生?(如果这很重要,我正在学习 learningwebgl.com上的课程。)