Creazione di schermo intero dispositivo DirectX provoca D3DERR_INVALIDCALL
-
28-09-2019 - |
Domanda
Sto cercando di creare un dispositivo DirectX a schermo intero (fino a questo momento sono stato finestra doign), ma il dispositivo non verrà creato e ottengo una chiamata HR valida sicuro.
Questo è il mio codice:
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
Avviso 'md3dPP.Windowed = false;'., Se questo è vero il dispositivo crea in modalità finestra
Ho l'impressione che ho fatto un errore in alcuni dei miei valori di default, ma non hanno idea di dove cercare. C'è un modo per ottenere un rapporto più dettagliato sul motivo per cui la creazione dispositivo non è riuscita al di là D3DERR_INVALIDCALL?
Soluzione
È necessario specificare un valore diverso per BackBufferFormat
perché le app solo finestrate permettono al D3DFMT_UNKNOWN
valore. Sceglietene uno che è supportato dal dispositivo (è possibile controllare utilizzando CheckDeviceFormat () ).