フルスクリーンDirectXデバイスを作成すると、D3DERR_INVALIDCALLが発生します
-
28-09-2019 - |
質問
DirectXデバイスをフルスクリーンに作成しようとしています(この時点でDoign Windogdedになっています)が、デバイスが作成されず、無効な呼び出しHRが失敗します。
これは私のコードです:
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
'md3dpp.windowed = false;'に注意してください。それが本当なら、デバイスはウィンドウモードで作成されます。
私は自分のデフォルト値のいくつかで間違いを犯したが、どこを見るべきかわからないという印象を受けています。デバイスの作成がD3DERR_INVALIDCALLを超えて失敗した理由について、より詳細なレポートを取得する方法はありますか?
解決
異なる値を指定する必要があります BackBufferFormat
ウィンドウのアプリのみが値を許可するためです D3DFMT_UNKNOWN
. 。デバイスでサポートされているものを選択します(使用して確認できます checkdeviceformat()).
所属していません StackOverflow