Создание полноэкранного устройства DirectX вызывает d3derr_invalidcall
-
28-09-2019 - |
Вопрос
Я пытаюсь создать устройство 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 ()).