我只是坚持使用纹理我的立方体 - 我搜索网络并意识到给我的立方体6个不同纹理(使用glDrawElements)的唯一方法是创建大约24个索引。它仍然比glDrawArrays更快,但它似乎非常不合逻辑且非常缓慢。我知道glDrawElements的目的是处理复杂的模型,其中很少的索引共享不同的纹理坐标。 但是,我仍然很困惑,因为glDrawElements给了我性能提升(没有任何效果,只是着色器着色)从大约50-67毫秒,10,000个立方体(glDrawArrays),到25-33毫秒,100,000个立方体。
我的问题是:我必须接受它,或者仍有某种方法可以接受它?
答案 0 :(得分:0)
我不知道你想要什么,但你可以尝试减少场景中的ob顶点数量。这将使速度更快。我认为如果你的Cube需要多个纹理,你可以将它们存储在纹理图集中,并为立方体的每个顶点指定纹理图集中图像的相应纹理坐标。这将减少纹理调用的数量,因为只有一个texutre。此外,您只需要渲染用户可见的顶点/三角形,因此您无需对多维数据集的背面进行纹理处理。
我找到了一个很好的网站,它解释了很多加速渲染成千上万个立方体的问题。他们试图通过在将许多顶点加载到GPU之前剔除很多顶点来在CPU上生成一个大对象,但我认为对于你的问题,你只能尝试使用尽可能少的纹理(TextureAtlas),这样会提高性能,但对于整个立方体,您需要8个顶点,每个顶点都有一个特定的TextureCoordinate。