Microsoft DxDiag peut détecter si un système a "Direct3D Acceleration". Si le système n'a pas la capacité, DxDiag écrira "Accélération Direct3D non disponible" et écrira dans la console "La fonctionnalité Direct3D n'est pas disponible Vous devez vérifier que le pilote est une version finale du fabricant du matériel."Fonction C++ pour la détection DxDiag "Direct3D Acceleration"
Je voudrais la même chose avec une fonction C++. J'ai fait quelques tests et la fonction suivante semble faire le travail.
Une autre idée?
Merci.
Alessandro
#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);
}