2011-01-31 16 views
1

我一直在想這很多,如果我切換巨大的紋理,而不是使用glBindTexture()切換許多稍微小一些的紋理,它會讓渲染速度變慢嗎?每次使用glBindTexture()時,我都會想到GPU會將紋理數據複製到更快的內存位置,所以我認爲大紋理的複製也需要更長的時間。但是,我記得之前用過很多小紋理來製作動畫,而且在一些gfx卡片上它的速度非常慢,但是當我將動畫幀放在單個紋理上時,性能變得很高。不過,在這兩種情況下,我在其他gfx卡上都沒有性能問題。OpenGL:較大的紋理表面比許多小質地表面更好或更差?

這就是說,我應該總是使用最大可能的紋理表面大小? (如果我不在這裏浪費太多空的紋理空間)

回答

6

切換紋理很貴。通常的瓶頸是緩存壓力,但偶爾紋理也會從GPU內存中換出。然而,只要所述紋理是駐留的,即位於快速GPU存儲器上,則紋理綁定的鏈接是O(1),即與紋理大小無關。所以人們應該總是儘可能使用盡可能大的紋理。關鍵字是紋理地圖集,這些通常是提高性能的方法。

+0

你能否提供一些參考資料,我覺得很難相信它總是需要所有紋理的同一時間。 – Rookie 2011-02-01 14:14:48