在GDIPlus中使用CachedBitmaps
时,如果Windows视频“ Hardware Acceleration”降低得太多,则会导致图形损坏-从而禁用DirectDraw:
硬件加速分为六个级别:
禁用所有加速
禁用所有基本加速功能。 (服务器计算机上的默认值)
禁用所有DirectDraw和Direct3D加速以及所有光标和高级加速
禁用所有光标和高级绘图加速
禁用光标和位图加速
启用所有加速(台式机默认)
如果禁用DirectDraw,则在GDI +中使用DrawCachedBitmap
会导致图形损坏。如果未启用DirectDraw,使用慢速DrawImage()
API对我来说很容易-但我必须能够检测到DirectDraw被禁用。
如何以编程方式检查DirectDraw是否已启用?
问题是:dxdiag如何做到这一点:
也可以看看
KB191660 - DirectDraw or Direct3D option is unavailable(archive)
最佳答案
如果您下载最新的DirectX SDK(我确定较早的sdk的示例与此类似),则有一个查询DXDIAG信息的示例。
该示例位于(SDK根目录)\ Samples \ C ++ \ Misc \ DxDiagReport
在dxdiaginfo.cpp中的注释方法
CDxDiagInfo::CDxDiagInfo
CDxDiagInfo::Init
CDxDiagInfo::QueryDxDiagViaDll
CDxDiagInfo::GetDisplayInfo
如果您运行该程序,则会输出大量的值。我认为您感兴趣的价值是
pDisplayInfo->m_szDDStatusEnglish