Performance webgl drawArray()是否清空/丢弃缓冲区?

Performance webgl drawArray()是否清空/丢弃缓冲区?,performance,webgl,render,Performance,Webgl,Render,为了加快WebGL中许多几乎相同对象的显示速度,我尝试(天真地,我猜)重用缓冲区内容。在每个对象的绘图例程中,我(稍微简化): 我的想法是,纹理、顶点和纹理坐标缓冲区是相同的,但模型视图矩阵会发生变化(相同的对象位于不同的位置)。但是,唉,什么也没有出现。当我注释dataBuffered=true时,它是可见的 所以我的问题是,drawArray()是放弃缓冲区还是清空缓冲区?还发生了什么?(如果有必要的话,我正在上的课程。)简短的回答是,是的,您可以重用为多个gl.drawArrays()设置

为了加快WebGL中许多几乎相同对象的显示速度,我尝试(天真地,我猜)重用缓冲区内容。在每个对象的绘图例程中,我(稍微简化):

我的想法是,纹理、顶点和纹理坐标缓冲区是相同的,但模型视图矩阵会发生变化(相同的对象位于不同的位置)。但是,唉,什么也没有出现。当我注释
dataBuffered=true
时,它是可见的


所以我的问题是,
drawArray()
是放弃缓冲区还是清空缓冲区?还发生了什么?(如果有必要的话,我正在上的课程。)

简短的回答是,是的,您可以重用为多个gl.drawArrays()设置的所有状态

这是一个小例子,它只是更改一个统一的浮点(Y比例)并重新绘制,每个刻度两次

(在本例中,没有纹理,但其他一些状态保持粘性。)

希望有帮助

uniformSetFloat(gl,prog,"scaleY",1.0);
gl.drawArrays(gl.TRIANGLES, 0, posPoints.length / 3);

uniformSetFloat(gl,prog,"scaleY",0.2);
gl.drawArrays(gl.TRIANGLES, 0, posPoints.length / 3);

简而言之,是的,您可以重用为多个gl.drawArrays()设置的所有状态

这是一个小例子,它只是更改一个统一的浮点(Y比例)并重新绘制,每个刻度两次

(在本例中,没有纹理,但其他一些状态保持粘性。)

希望有帮助

uniformSetFloat(gl,prog,"scaleY",1.0);
gl.drawArrays(gl.TRIANGLES, 0, posPoints.length / 3);

uniformSetFloat(gl,prog,"scaleY",0.2);
gl.drawArrays(gl.TRIANGLES, 0, posPoints.length / 3);

您需要在某处发布更多代码或工作示例(JSFIDLE?)。不,DrawArray不会丢弃或清空任何缓冲区。您需要在某处发布更多代码或工作示例(JSFIDLE?)。不,DrawArray不会丢弃或清空任何缓冲区。感谢您的保证-其中有另一个错误阻止了任何显示。感谢您的保证-其中有另一个错误阻止了任何显示。