2008-09-11 79 views
3

我們有一個雙屏DirectX應用程序,它以前使用NVIDIA 8400GS(256MB)以一致的60 FPS(顯示器的同步速率)運行。然而,當我們將這張卡換成512 MB的RAM時,幀速率會高於40 FPS。 (因爲我們使用三重緩衝,所以它只有這個高。)這兩張卡來自同一製造商(PNY)。所有其他的東西都是平等的,這是一個Windows XP Embedded應用程序,我們從每張卡的新圖像開始。驅動程序版本號是169.21。升級顯卡時,會導致幀頻下降的原因是什麼?

該應用程序都是2D的。 I.E.只是一堆紋理四邊形和一大堆預渲染的圖形(因此需要升級卡的內存)。我們也有壓縮的動畫,CPU即時解碼 - 這涉及到紋理鎖定。這些鎖永遠佔用,但我也嘗試爲CPU更新一個單獨的系統內存紋理,然後使用設備的UpdateTexture方法更新渲染的紋理。性能沒有整體差異。

雖然我已閱讀了互聯網上關於DirectX性能的所有常見問題,但這仍然是我第一次參與DirectX項目,因此您擁有的任何知識知識都將非常有用。 :)

另一件事,雖然我在這個問題上;當在交換鏈上調用Present時,無論我在當前參數(PresentationInterval)和調用本身的標誌中使用D3DPRESENT_DONOTWAIT,DirectX都會等待當前完成。由於這是一個雙屏應用程序,這是一個問題,因爲兩臺顯示器似乎沒有被鎖定,我正在通過運行線程池來運行Present函數來解決這個問題。這可能是什麼原因?

+0

您可能已經被欺騙購買了只有8個着色單元而不是16個的65nm「rev.2」版本。也就是說,如果您可以使用帶有4倍內存和DDR3的GT610,爲什麼要使用8400GS的DDR2,以及相同價格的4倍着色器單元數量? (此外,它的TDP僅爲29W,相對於40W) – Damon 2013-12-02 14:32:24

回答

2

卡片是否完全相同(都是GeForce 8400GS),只有內存大小不同?不同的內存大小通常會略有不同的時鐘速率(即您的內存較多的卡可能會使用較慢的內存!)。

所以首先要檢查的將是GPU內核&內存時鐘頻率,使用類似GPU-Z

+0

我認爲這是原因。謝謝。 – 2008-09-17 13:47:05

1

這是一個簡單的測試,看看表面鎖是否是問題,只是註釋紋理更新,看看幀率是否返回到60hz。不幸的是,寫入鎖定表面和更新資源會導致性能下降。你是否使用紋理貼圖?我知道DX9添加了自動生成的mipmap,可能會花費很多時間來生成這些。如果你每幀不斷鎖定相同的資源,你也可以嘗試創建一個紋理池,有點像三重緩衝除了紋理。您將讓渲染使用一個紋理,並在下一次更新時選取池中未用於渲染的下一個可用紋理。除非你的記憶受到限制,或者你只能對動畫紋理進行差異化。

+0

Mipmaps已禁用。我會嘗試雙緩衝動態紋理,看看會發生什麼。謝謝。 – 2008-09-11 14:49:37

相關問題