2011-01-30 52 views
0

我必須合併多達17個紋理,然後使用openGL將其渲染爲四邊形(很好,2個三角形)。我必須使這些四邊形的一個很大的 - 或許500紋理splat opengl最有效的方法?

我想知道這樣做最快/最好的方法

A.在許多渲染過程 B.在FBO結合紋理和渲染一次 C.使用opengl multitexture並渲染幾遍 D.將紋理與CPU結合,上傳到opengl紋理,然後渲染 E.其他?

+0

你需要做什麼樣的組合? (所有這些Alpha混合?)對於一個給定的四邊形,所有紋理都是相同的大小,並且它們是以每幀爲基礎進行更改的? – user57368 2011-01-30 07:12:39

回答

0

A,B和C應該具有相同的性能。

這一切都涉及到你的GPU和CPU有多強大。這將決定是否使用a,b或c或d之一。

1

多通道意味着多像素着色器執行以及多個ROP /混合操作,這很容易成爲上一代和當代硬件的瓶頸。因此,將其全部裝入一次或幾次(C)應該是有利的。

我不確定「FBO中的組合」的事情,雖然我不能提供確鑿的證據,但它「覺得」它可能會更慢(因爲您至少會有2個FBO重新綁定並且至少一個管道失速)。雖然當然這取決於......如果你將相同的17個紋理結合一次,並繪製單個組合紋理一千次,它可能會更快。如果你有十幾種如何組合這17種紋理的組合,它可能看起來不一樣。

現代GPU在片段着色器(GL 3.x硬件最少爲48)中不應該有多達17個紋理採樣的問題,並且它很簡單。