2011-08-30 74 views
5

我正在使用Ffmpeg創建一個OpenGL視頻播放器,並且我的所有視頻都不是2的電源(因爲它們是正常的視頻分辨率)。它使用我的nvidia顯卡在fps下運行,但是我發現它不能運行在較老的ATI顯卡上,因爲它們不支持非二次冪的貼圖。冪次冪貼圖效率如何?

我只會在Nvidia卡上使用它,所以我並不太在乎ATI問題,但是我想知道如果這些構造函數是2的冪次方,我會得到多少性能提升?它值得填補嗎?

此外,如果它是值得的,我該如何去填充他們到最近的更大的功率?

回答

3

寫一個視頻播放器,你應該使用glTexSubImage2D()更新你的紋理內容。該功能允許您提供任意大小的圖像,這些圖像將放置在目標紋理中的某處。因此,您可以首先使用數據指針爲NULL的glTexImage()調用來初始化紋理,然後填充數據。

2紋理純功率的性能增益在很大程度上取決於所使用的硬件,但在極端情況下可能高達300%。

+0

好吧,我已經使用glTexSubImage2D()像你說的,但是當我使用glTexImage2D()初始化紋理時,我應該將它創建爲2的冪,然後整理glTexCoord2f()調用以僅顯示視頻「part 「最大效率的紋理? –

+0

它很大程度上取決於您的OpenGL實現(讀取GPU)。所有最近的GPU都只有非常小的NPO2性能 – datenwolf