Erstellen von Vollbild-DirectX-Gerät verursacht D3DERR_INVALIDCALL
-
28-09-2019 - |
Frage
Ich versuche, ein DirectX-Gerät in vollem Umfang nutzen zu erstellen (bis zu diesem Zeitpunkt ich doign Fenster bin), aber das Gerät wird nicht erstellt, und ich einen ungültiger Anruf HR nicht erhalten.
Dies ist mein 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
Hinweis ‚md3dPP.Windowed = false;‘. Wenn das wahr ist das Gerät erzeugt im Fenstermodus
Ich habe den Eindruck, ich habe einen Fehler in einigen meiner Standardwerte gemacht, aber keine Ahnung, wo sie suchen müssen. Gibt es eine Möglichkeit, einen ausführlichen Bericht darüber zu erhalten, warum das Gerät Schöpfung jenseits D3DERR_INVALIDCALL gescheitert?
Lösung
Sie müssen einen anderen Wert für BackBufferFormat
angeben, da nur Fenster Anwendungen den Wert D3DFMT_UNKNOWN
ermöglichen. Wählen Sie eine, die von Ihrem Gerät unterstützt wird (Sie können überprüfen, indem Sie mit CheckDeviceFormat () ).