【发布时间】:2010-05-28 17:00:27
【问题描述】:
当在 GDIPlus 中使用 CachedBitmaps 时,如果 Windows 视频“硬件加速”降低太多会导致图形损坏 - 以至于 DirectDraw 被禁用:
有六个级别的硬件加速:
- 禁用所有加速
- 禁用除基本加速之外的所有加速。 (服务器机器上的默认设置)
- 禁用所有 DirectDraw 和 Direct3D 加速,以及所有光标和高级加速
- 禁用所有光标和高级绘图加速
- 禁用光标和位图加速
- 启用所有加速(台式机机器上的默认设置)
如果 DirectDraw 被禁用,那么在 GDI+ 中使用 DrawCachedBitmap 将导致图形损坏。如果 DirectDraw 未启用,我很容易使用较慢的 DrawImage() API - 但我必须能够检测 DirectDraw 已禁用。
如何以编程方式检查是否启用了 DirectDraw?
问题是:dxdiag 是如何做到的:
另见
KB191660 - DirectDraw or Direct3D option is unavailable (archive)
【问题讨论】:
-
好问题。我在 GetSystemMetrics、SystemParametersInfo 或(不存在的?)DirectDraw 参考资料中一无所获。如您所知,DirectDraw 已被弃用。
-
我实际上并没有使用 DirectDraw,所以如果它被禁用我不受影响。另一方面,我不能规定 GDIPlus 使用什么底层技术。我说“Direct Draw”的唯一原因是因为第一个导致问题的滑块选项提到了“DirectDraw 和 Direct3D”,我假设 GDI+ 没有使用 Direct3D - 离开 DirectDraw。
-
@Andreas Rejbrand:我明白你对 DirectDraw 文档的意思——就好像 DirectDraw 从未存在于桌面上一样。 :\
-
-
它不会强制,除非它只会奖励赏金(并且只奖励有 2 个或更多赞成票的答案)。否决我们所有的答案是相当蹩脚的。我们正在努力为您提供帮助,我们提供的任何信息都不是“没有帮助”的。祝你好运。
标签: winapi gdi+ directdraw