渲染数千个文本多维数据集

时间:2015-04-22 17:25:44

标签: opengl render indices cubes

我只是坚持使用纹理我的立方体 - 我搜索网络并意识到给我的立方体6个不同纹理(使用glDrawElements)的唯一方法是创建大约24个索引。它仍然比glDrawArrays更快,但它似乎非常不合逻辑且非常缓慢。我知道glDrawElements的目的是处理复杂的模型,其中很少的索引共享不同的纹理坐标。 但是,我仍然很困惑,因为glDrawElements给了我性能提升(没有任何效果,只是着色器着色)从大约50-67毫秒,10,000个立方体(glDrawArrays),到25-33毫秒,100,000个立方体。

我的问题是:我必须接受它,或者仍有某种方法可以接受它?

1 个答案:

答案 0 :(得分:0)

我不知道你想要什么,但你可以尝试减少场景中的ob顶点数量。这将使速度更快。我认为如果你的Cube需要多个纹理,你可以将它们存储在纹理图集中,并为立方体的每个顶点指定纹理图集中图像的相应纹理坐标。这将减少纹理调用的数量,因为只有一个texutre。此外,您只需要渲染用户可见的顶点/三角形,因此您无需对多维数据集的背面进行纹理处理。

我找到了一个很好的网站,它解释了很多加速渲染成千上万个立方体的问题。他们试图通过在将许多顶点加载到GPU之前剔除很多顶点来在CPU上生成一个大对象,但我认为对于你的问题,你只能尝试使用尽可能少的纹理(TextureAtlas),这样会提高性能,但对于整个立方体,您需要8个顶点,每个顶点都有一个特定的TextureCoordinate。