首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WebGL requestAnimFrame()

WebGL requestAnimFrame()
EN

Stack Overflow用户
提问于 2015-02-21 04:08:10
回答 1查看 644关注 0票数 0

我在画布中有许多3D对象,并且希望只在其中一个(立方体)上实现requestAnimFrame()函数。其他项目不能受到影响,应该保持不变。render函数如下所示:

代码语言:javascript
运行
复制
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 );
}

如果我将其他对象添加到此函数中,例如

代码语言:javascript
运行
复制
// Render sphere
gl.drawArrays( gl.TRIANGLES, 0, points.length ); 

它们将与立方体一起旋转。

问:我要为静态对象创建一个单独的呈现函数吗?我敢说我可以排除第二次呼叫

代码语言:javascript
运行
复制
 gl.clear( gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); 

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

EN

回答 1

Stack Overflow用户

发布于 2015-02-21 04:42:55

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28637348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档