WebGL requestAnimFrame()

时间:2015-02-20 20:08:10

标签: javascript html5 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.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); 

因为缓冲区不需要第二次清除?或者我错过了什么,还有另一种方法可以防止其他物体移动吗?

1 个答案:

答案 0 :(得分:0)

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

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