Microsoft DxDiag может определить, имеет ли система «ускорение Direct3D».Функция C++ для обнаружения DxDiag «Direct3D Acceleration»
Если у системы нет возможности, 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);
}