在GDIPlus中使用CachedBitmaps时,如果Windows视频“ Hardware Acceleration”降低得太多,则会导致图形损坏-从而禁用DirectDraw:

winapi - Win32:如何确定是否启用了DirectDraw?-LMLPHP

硬件加速分为六个级别:


禁用所有加速
禁用所有基本加速功能。 (服务器计算机上的默认值)
禁用所有DirectDraw和Direct3D加速以及所有光标和高级加速
禁用所有光标和高级绘图加速
禁用光标和位图加速
启用所有加速(台式机默认)


如果禁用DirectDraw,则在GDI +中使用DrawCachedBitmap会导致图形损坏。如果未启用DirectDraw,使用慢速DrawImage() API对我来说很容易-但我必须能够检测到DirectDraw被禁用。

如何以编程方式检查DirectDraw是否已启用?



问题是:dxdiag如何做到这一点:



也可以看看

KB191660 - DirectDraw or Direct3D option is unavailablearchive

最佳答案

如果您下载最新的DirectX SDK(我确定较早的sdk的示例与此类似),则有一个查询DXDIAG信息的示例。

该示例位于(SDK根目录)\ Samples \ C ++ \ Misc \ DxDiagReport

在dxdiaginfo.cpp中的注释方法

CDxDiagInfo::CDxDiagInfo
CDxDiagInfo::Init
CDxDiagInfo::QueryDxDiagViaDll
CDxDiagInfo::GetDisplayInfo


如果您运行该程序,则会输出大量的值。我认为您感兴趣的价值是pDisplayInfo->m_szDDStatusEnglish

09-07 08:12