在iPad上使用OpenGL ES在1帧中最多可以绘制多少个三角形?

5

在iPad上单帧最多可以绘制多少个三角形?此外,绘制这些三角形使用的GL调用数量是否有限制?


这高度取决于您如何绘制它们。您使用VBOs吗?您使用什么数据类型?您是否有模板和深度缓冲区?您需要绑定多少个纹理?这些纹理有多大?您在顶点和片段着色器中做了什么?还是使用OpenGL ES 1.1? - JustSid
  1. 我使用VBOs
  2. GLfloat, GLushort
  3. 深度
  4. 50
  5. 1024*1024
  6. 没有着色器
  7. 1.1
- kd3D
1个回答

6
你在iPad上能够使用的三角形总数的唯一限制是内存大小和渲染速度。你发送的顶点越多,应用程序使用的内存就越多,渲染速度就越慢。例如,在我的基准测试中,我使用OpenGL ES 1.1平滑着色、单个光源、存储在顶点缓冲对象(VBO)中的几何体和由GLshorts表示的顶点,在iPad 1上每秒能够推送超过180万个三角形。iPad 2比那还要快得多,特别是当你在片段着色器中执行更复杂的操作时。从这个数字可以估计,如果我想要在iPad 1上以60 FPS渲染,我的场景几何体中应该少于30,000个三角形。
由于其不同的复杂性,OpenGL ES 2.0着色器使事情变得更加复杂,但它们可以实现新的效果,并且可能允许您使用更少的三角形来实现与固定功能管道相同的图像质量。
例如,在这个问题中,Davido拥有约900,000个三角形的模型,他能够在iPad 2上以近10 FPS的速度渲染。我在那里的答案中还提出了一些几何优化技术,我发现这些技术对于OpenGL ES 1.1渲染有重要影响,尤其是当你在设备上最大化瓦片使用率时。

我尝试使用GLshort来处理我的顶点,但是我的场景无法正确渲染(物体失去了它们的形状)。因此,我决定减少几何图形并将其分成部分,这样只有在视野范围内时才绘制。 - kd3D
同时我的渲染利用率为100%,但平铺器利用率为62%。 - kd3D
@kd3D - 你需要考虑到GLshort的范围是从-32768到32768,并在使用它时适当地调整你的渲染。然而,在OpenGL ES 2.0中,我不再推荐使用它,因为在PowerVR SGX系列中需要进行转换才能将其转换为GPU内的浮点格式。在你的情况下,你似乎受到填充率限制,所以你并没有真正遇到三角形渲染问题。相反,你需要减少渲染的片段数量和每个片段的工作量。 - Brad Larson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接