2012-11-14 54 views
0
  1. 如果我想在Windows XP和更高版本的Windows上實時縮放和合成二維消除鋸齒矢量和位圖圖像,最好使用可用的硬件加速,應該使用GDI +或DirectX 9.0c? (實際上,Windows XP和Windows 7很重要,但我們並不擔心Vista上的性能。)Windows XP上的DirectX,GDI +或SDI?

  2. 考慮到應用程序不是跨平臺的(並且永遠不會),使用SDL是否有任何優點? ?我想知道SDL是否可以更容易地切換到任何底層繪圖API提供更好的性能......

  3. 在哪裏可以找到在DirectX 9.0c中進行縮放和合成2D圖像的文檔? (我發現了DirectDraw的文檔,但是讀到它在DirectX 7之後不推薦使用,但直到DirectX 10才能使用Direct2D。)

  4. 我可以合理地預期在Windows XP上的縮放和合成,低規格個人電腦(即集成顯卡)?如果不是,那麼我是否使用GDI +或DirectX 9.0c也無關緊要?

回答

0

我剛剛發現這個:2D Rendering in DirectX 8

看來,由於微軟在DirectX 7之後刪除了DirectDraw,他們預計所有2D繪圖都將使用3D API完成。這可以解釋爲什麼我完全沒有找到我正在尋找的文檔。

該文章看起來很有希望。

這是另一個:2D Programming in a 3D World

1

請勿使用GDI +。它在軟件中完成所有工作,並且它具有不利於軟件性能的渲染模型。你會更喜歡與其他任何東西。

Direct3D或OpenGL(如果您需要更完整的跨平臺API,您可以通過SDL訪問該Direct3D或OpenGL)可以在支持它的硬件上爲您提供最佳性能。 Direct2D在同一條船上,但在Windows XP上不可用。我的理解是,至少在英特爾集成GPU的情況下,硬件能夠執行簡單的操作,如轉換和組合,而且這些GPU的大部分問題都是針對對功能和性能有高要求的遊戲,以及針對ATI/Nvidia顯卡進行了優化。如果你以某種方式找到一臺顯卡不支持Direct3D的機器,並回退到軟件,那麼你可能會遇到問題。

我相信SDL在Windows上使用DirectDraw來實現非OpenGL繪圖。不知何故,我得到了一個印象,即DirectDraw在現代Windows版本的軟件中執行所有操作(並且給出了DirectDraw的用途,因爲它從win9x時代開始並不重要),但我無法驗證。

理想情況是跨平臺的矢量圖形庫,可以使用Direct3D或OpenGL進行渲染,但AFAICT沒有這樣的東西可用。開羅圖形庫在Windows上缺乏加速,Mozilla已經啓動了一個名爲Azure的項目,該項目顯然具有這一功能,但似乎並未設計用於其項目之外。

+0

感謝您的建議。這聽起來像我應該避免SDI +和DirectDraw。那麼Direct3D有2D繪圖的API - 特別是縮放和合成?如果是這樣,我在哪裏可以找到文檔?我所讀過的所有東西都直接進入了多邊形,虛擬相機和紋理 - 我認爲這些都不相關。 –

+0

維基百科說DirectDraw _is_硬件加速。 :S –