Javascript WebGL requestAnimFrame()

Javascript WebGL requestAnimFrame(),javascript,html,webgl,Javascript,Html,Webgl,我在画布中有许多3D对象,我希望只在其中一个(多维数据集)上实现requestAnimFrame()函数。其他项目不得受到影响,应保持静止。渲染函数如下所示: function render() { gl.clear( gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); theta[axis] += 2.0; gl.uniform3fv(thetaLoc, theta); // Render cube gl.draw

我在画布中有许多3D对象,我希望只在其中一个(多维数据集)上实现requestAnimFrame()函数。其他项目不得受到影响,应保持静止。渲染函数如下所示:

function render()
{
    gl.clear( gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);

    theta[axis] += 2.0;
    gl.uniform3fv(thetaLoc, theta);

    // Render cube
    gl.drawArrays( gl.TRIANGLES, 0, NumVertices );

    requestAnimFrame( render );
}
如果我将其他对象添加到此函数,例如

// Render sphere
gl.drawArrays( gl.TRIANGLES, 0, points.length ); 
它们将与立方体一起旋转

问题:是否为静态对象创建单独的渲染函数?我想我可以排除第二次呼叫

 gl.clear( gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); 

因为缓冲区不需要第二次清除?或者我遗漏了什么,是否有其他方法阻止其他对象移动?

不要更新这些对象的位置/旋转/缩放数据。您只希望在应用程序中使用一个requestAnimationFrame方法


gl.clear();只需清除指定的缓冲区,在屏幕顶部绘制
gl.clearColor()
中的颜色即可。然后,下次调用drawArrays()时,请确保只移动立方体,不要移动或旋转场景中的其他对象,它们只是在同一点重新绘制。

不必使其复杂化。一种方法是在着色器上保持矩阵分离(投影、摄影机、对象变换)。因此,您可以为相应的object.window.requestAnimFrame调用update转换和调用DrawArray。