フルスクリーンDirectXデバイスを作成すると、D3DERR_INVALIDCALLが発生します

StackOverflow https://stackoverflow.com/questions/4074946

質問

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()).

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top