Webgl Frustum视图

时间:2011-07-07 15:39:44

标签: webgl

当我在webgl中使用1个纹理渲染5个框时,应用程序以60 fps运行,很不错。但是当我渲染70个盒子时,性能提升到~40fps,但在视图中体积仍然是5。

我已经调试了应用程序,并且当没有需要时,所有70个盒子都使用每个片段着色器,因为其中65个是截头锥体。我认为gl.viewport声明剪切出视图多边形但不是。

我想知道是否采用fustrum剔除技术来避免这种情况?如何激活fustrum剔除?是否有任何webgl命令或我必须手动执行?

提前致谢,

1 个答案:

答案 0 :(得分:1)

你猜对了:你必须手动完成。

但是这种技术是在对象级别。视口之外的各个三角形应该由硬件自动剔除。

您的绘制循环是否可能存在其他低效率,随着盒子数量的增加可能会减慢速度?例如,你绑定每个框的纹理?或者使用getAttribLocation或getUniformLocation查询着色器?或者做其他WebGL查询(所有这些都会大大减慢管道速度)?