Создание полноэкранного устройства DirectX вызывает d3derr_invalidcall

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

Вопрос

Я пытаюсь создать устройство DirectX в полноэкранном экране (до этого момента времени, когда я был доуроным Windows), но устройство не будет создано, и я получаю неверный вызов 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