Creación de pantalla completa dispositivo DirectX causa D3DERR_INVALIDCALL
-
28-09-2019 - |
Pregunta
Estoy tratando de crear un dispositivo de DirectX en pantalla completa (hasta este punto en el tiempo que he estado con ventanas doign), pero el dispositivo no será creado y me sale un HR llamada no válida falle.
Este es mi código:
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
Aviso 'md3dPP.Windowed = false;'., Si eso es cierto el dispositivo crea en modo ventana
Estoy bajo la impresión de que he cometido un error en algunos de mis valores por defecto, pero no tienen idea de dónde buscar. ¿Hay una manera de obtener un informe más detallado de por qué la creación de dispositivos no más allá D3DERR_INVALIDCALL?
Solución
Es necesario especificar un valor diferente para BackBufferFormat
porque Aplicaciones sólo windowed permiten al D3DFMT_UNKNOWN
valor. Escoja uno que sea compatible con su dispositivo (se puede comprobar mediante el uso de CheckDeviceFormat () ).