2010-11-02 124 views
1

我試圖在全屏中創建一個DirectX設備(直到此時我已經做了窗口處理),但設備不會被創建,並且我得到一個無效呼叫HR失敗。創建全屏DirectX設備導致D3DERR_INVALIDCALL

這是我的代碼:

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失敗的更詳細報告?

回答

4

您需要爲BackBufferFormat指定不同的值,因爲只有窗口應用允許值D3DFMT_UNKNOWN。選擇一個您的設備支持的設備(可以使用CheckDeviceFormat()進行檢查)。