【问题标题】:Are the GDI functions BitBlt and StretchBlt hardware accelerated in Win32?GDI 函数 BitBlt 和 StretchBlt 是否在 Win32 中硬件加速?
【发布时间】:2012-03-09 23:47:01
【问题描述】:

我似乎无法通过搜索得到明确的答案。 Win32 blitting 操作是否硬件加速(GDI,而不是 GDI+)。我不知道这些功能如何与图形驱动程序交互。是否有任何函数调用来验证此功能,例如?GetCaps?对于特定的图形设备(win32图形设备),看看这些函数是否正在接收硬件加速?

【问题讨论】:

    标签: winapi bitmap hardware gdi bitblt


    【解决方案1】:

    根据this,GDI 仅在 Windows 7 及更高版本上进行硬件加速。 This 列出了如何指定要硬件加速的操作。列表中包含BitBltStretchBlt,所以是的,它们是硬件加速的,但您需要有一个支持它的系统,并且您需要启用它。

    【讨论】:

    • 基本正确。 GDI 硬件加速已经有很长时间了。 Windows Vista 对 GDI 来说只是一个黑暗时期。它失去了硬件加速功能,用户抱怨不断。结果(或者可能是一直以来的计划),Windows 7 将硬件加速带回了 GDI,并且一切都恢复了。
    【解决方案2】:

    GDI 操作是否为硬件加速取决于驱动程序,但除 Vista* 之外的所有 Windows 版本都支持它。

    • Vista 添加了一个名为 Windows 显示驱动程序模型 (WDDM) 的新驱动程序模型
    • WDDM v1.1 已添加到 Windows 7 中,其中包括返回 GDI hardware acceleration

    *:可以在 Vista 上使用 XP 驱动程序,我不知道在该设置中 GDI 会发生什么。 (也许您可以通过检查 D3DCAPS2_CANSHARERESOURCE 来检测到这一点?)编辑:根据this,它适用于 XPDM。

    有一些内核caps你可以在Win7上检查,但我不知道是否可以在用户模式下检查。

    【讨论】:

    • 注意:根据我的测试,似乎阻止 Win7 加速的一件事是使用 SetStretchBltMode (dc, HALFTONE) 在拉伸期间启用线性过滤(我不确定这是否在 XP 上加速)。
    • @Suma 是的,我想知道为什么硬件做得很好。事实上,那里的收益会很显着。
    猜你喜欢
    • 2011-02-08
    • 2011-06-03
    • 2011-09-03
    • 1970-01-01
    • 2014-07-27
    • 2012-08-23
    • 2015-12-25
    • 2015-10-04
    • 1970-01-01
    相关资源
    最近更新 更多