我正試圖加速繪製每幀改變的全屏幕紋理。在我的系統中,我可以使用GDI和BitBlt()獲得大約1000 FPS,但我認爲可以通過使用Direct3D和動態紋理來提高性能。相反,我只能達到250 FPS左右。如何提高Direct3D流式紋理性能?
我在帶有當前驅動程序的ATI HD 4870的Mac Pro上運行。
我試過使用動態紋理,這給了我一個小的收益(〜15FPS),我試過使用紋理鏈來避免管道堵塞,並且沒有任何效果。
我環顧四周,很少有關於如何使用動態紋理的信息。
我錯過了一些基本的東西嗎?
設備設置:
pparams.BackBufferCount = 1; pparams.SwapEffect = D3DSWAPEFFECT_DISCARD; pparams.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
紋理創建:
device->CreateTexture(width, height, 1, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &texture, NULL);
紋理更新:
texture->LockRect(0, &locked, NULL, D3DLOCK_DISCARD); ... write texture data texture->UnlockRect(0); device->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, vertices, sizeof(*vertices)); ...
您可以從 http://www.libsdl.org/tmp/SDL-1.3.zip
得到進度代碼工作謝謝!
很久以前我嘗試過,當我沒有使用動態紋理,並且因爲每幀只有一個DrawPrimitiveUP,它似乎並不重要。它會對動態紋理產生更多影響嗎? – 2011-02-06 09:29:04