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?

¿Fue útil?

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 () ).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top