Création plein écran dispositif DirectX provoque D3DERR_INVALIDCALL
-
28-09-2019 - |
Question
Je suis en train de créer un dispositif DirectX en plein écran (jusqu'à ce moment je suis fenêtré Faire des), mais le dispositif ne sera pas créé et je reçois un échec RH d'appel non valide.
Ceci est mon code:
md3dPP.BackBufferWidth = 1280;
md3dPP.BackBufferHeight = 720;
md3dPP.BackBufferFormat = D3DFMT_UNKNOWN;
md3dPP.BackBufferCount = 1;
md3dPP.MultiSampleType = D3DMULTISAMPLE_NONE;
md3dPP.MultiSampleQuality = 0;
md3dPP.SwapEffect = D3DSWAPEFFECT_DISCARD;
md3dPP.hDeviceWindow = mhMainWnd;
md3dPP.Windowed = false;
md3dPP.EnableAutoDepthStencil = true;
md3dPP.AutoDepthStencilFormat = D3DFMT_D24S8;
md3dPP.Flags = 0;
md3dPP.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
md3dPP.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
HR(md3dObject->CreateDevice(
D3DADAPTER_DEFAULT, // primary adapter
mDevType, // device type
mhMainWnd, // window associated with device
devBehaviorFlags, // vertex processing
&md3dPP, // present parameters
&m_pd3dDevice)); // return created device
Avis 'md3dPP.Windowed = false;'., Si c'est vrai que le dispositif crée en mode fenêtré
Je suis sous l'impression que je l'ai fait une erreur dans certaines de mes valeurs par défaut, mais ont aucune idée où chercher. Y at-il un moyen d'obtenir un rapport plus détaillé pour expliquer pourquoi la création de l'appareil n'a pas au-delà D3DERR_INVALIDCALL?
La solution
Vous devez spécifier une valeur différente pour BackBufferFormat
parce que les applications ne permettent fenêtré la valeur D3DFMT_UNKNOWN
. Choisissez celui qui est pris en charge par votre appareil (vous pouvez vérifier en utilisant CheckDeviceFormat () ).