2015-04-22 150 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。