微軟輸入dxdiag可以檢測系統是否有「Direct3D加速」。C++函數來完成輸入dxdiag「Direct3D加速」檢測
如果系統沒有能力,DxDiag將寫入「Direct3D Acceleration not available」,並將在控制檯中寫入「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);
}