【发布时间】:2013-10-18 05:38:03
【问题描述】:
为了加快 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 学习课程。)
【问题讨论】:
-
您需要在某处发布更多代码或工作示例(jsfiddle?)。不,drawArrays 不会丢弃或清空任何缓冲区。
标签: performance webgl render