2015-04-22 25 views
-1

我刚刚贴上了纹理我的多维数据集 - 我搜索了网页,并意识到让我的多维数据集6不同纹理(使用glDrawElements)的唯一方法是创建约24个索引。它的速度比glDrawArrays还要快,但它看起来很不合逻辑,速度很慢。我明白,glDrawElements的目的是处理复杂的模型,其中很少的索引共享不同的纹理坐标。 但是,我仍然很困惑,因为glDrawElements从大约50-67ms的10,000立方体(glDrawArrays)给我性能提升(没有任何效果,只是着色器着色),到25-33ms与100,000立方体。渲染数以千计的文本多维数据集

我的问题是:我只需要接受它,或者还有一些方法来解决这个问题?

+0

而不是通过曲面纹理,你可以尝试使用Cubemap纹理纹理,如[那个](https://www.evl.uic.edu/aej/525/pics/cubemap-diagram.jpg)。 –

+0

你为什么期望'glDrawElements'变慢?它几乎从来不是,即使根本没有共享顶点。 – derhass

回答

0

我不知道你想要做什么,但是你可以尝试减少场景中的顶点数量。这会使速度更快。我认为如果您的立方体需要多个纹理,您可以将它们存储在纹理图集中,并为该立方体的每个顶点分配纹理图集中图像的相应纹理坐标。这会减少纹理调用的次数,因为只有一个texut。此外,您只需渲染用户可见的顶点/三角形,这样就不需要纹理背面的立方体。

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