Microsoft DxDiag 可以检测系统是否具有“Direct3D 加速”。
如果系统没有此功能,DxDiag 将写入“Direct3D 加速不可用”,并在控制台中写入“Direct3D 功能不可用。您应该验证驱动程序是硬件制造商的最终版本。”
我想要一个 C++ 函数也一样。
我做了一些测试,以下功能似乎可以完成这项工作。
还有其他更好的主意吗?
谢谢你。
亚历山德罗
#include <ddraw.h>
#include <atlbase.h>
bool has3D()
{
CComPtr< IDirectDraw > dd;
HRESULT hr = ::DirectDrawCreate( 0, &dd, 0 );
if ( hr != DD_OK ) return false;
DDCAPS hel_caps, hw_caps;
::ZeroMemory( &hel_caps, sizeof( DDCAPS ) );
::ZeroMemory( &hw_caps, sizeof( DDCAPS ) );
hw_caps.dwSize = sizeof( DDCAPS );
hel_caps.dwSize = sizeof( DDCAPS );
hr = dd->GetCaps( &hw_caps, &hel_caps );
if ( hr != DD_OK ) return false;
return (hw_caps.dwCaps & DDCAPS_3D) && (hel_caps.dwCaps & DDCAPS_3D);
}