2012-02-19 87 views
6

我似乎無法通過搜索得到明確的答案。 Win32 blitting操作硬件是否加速(GDI,而不是GDI +)?我不知道這些功能如何與圖形驅動程序接口。是否有任何函數調用來驗證此功能,如?GetCaps?爲特定的圖形設備(win32圖形設備),看看這些功能是否正在接受硬件加速?Win32中GDI函數BitBlt和StretchBlt硬件加速了嗎?

回答

3

根據this,GDI只是在Windows 7之後的硬件加速。 This列出瞭如何指定哪些操作將被硬件加速。包括在列表中的是BitBltStretchBlt,所以是的,它們是硬件加速的,但你需要一個支持它的系統,並且你需要啓用它。

+3

大部分是正確的。 GDI在很長一段時間裏一直是硬件加速的。 Windows Vista對於GDI來說只是一個黑暗時刻;它失去了硬件加速,用戶不斷抱怨。因此(或者這也許是這個計劃一直以來),Windows 7將硬件加速帶回到GDI,並且所有的事情都再次與宇宙有關。 – 2012-02-19 08:56:40

+0

航空,而不是Vista。 – 2012-02-19 12:22:22

2

如果GDI操作是硬件加速取決於驅動程序,但Windows *以外的所有版本都支持它。

  • Vista中增加了一個叫做Windows顯示器驅動程序模型(WDDM)的新的驅動程序模式在Windows 7中添加
  • WDDM 1.1版,這包括GDI hardware acceleration回報。

*:可以在Vista上使用XP驅動程序,在該設置下GDI會發生什麼,我不知道。 (也許您可以通過檢查D3DCAPS2_CANSHARERESOURCE來檢測此問題?)編輯:根據this,它適用於XPDM。

有一些內核caps你可以檢查Win7,但我不知道是否有可能檢查用戶模式。

+0

注意:基於我的測試,似乎阻止Win7上加速的一件事是使用SetStretchBltMode(dc,HALFTONE)在Stretch過程中啓用線性過濾(我不確定這是否在XP上加速)。 – Suma 2012-03-23 11:13:40

+0

@Suma是的,我想知道爲什麼硬件能做得很好。事實上,它就是在那裏獲得重大收益。 – 2016-04-20 11:49:28