2010-11-02 4 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 = ложь;', если это правда, устройство создает в оконном режиме.

У меня такое впечатление, что я допустил ошибку в некоторых из моих значений по умолчанию, но понятия не имею, где искать. Есть ли способ получить более подробный отчет о том, почему создание устройства завершилось за пределами D3DERR_INVALIDCALL?

ответ

4

Вам необходимо указать другое значение для BackBufferFormat, потому что только оконные приложения допускают значение D3DFMT_UNKNOWN. Выберите тот, который поддерживается вашим устройством (вы можете проверить, используя CheckDeviceFormat()).

Смежные вопросы