Pergunta

Estou tentando criar um dispositivo DirectX na tela inteira (até este momento em que fui com janela do compensação), mas o dispositivo não será criado e recebo uma chamada de chamada inválida de RH.

Este é o meu 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

Observe 'md3dpp.windowed = false;', se isso for verdade, o dispositivo cria no modo de janela.

Estou com a impressão de que cometi um erro em alguns dos meus valores padrão, mas não tenho idéia de onde olhar. Existe uma maneira de obter um relatório mais detalhado sobre por que a criação do dispositivo falhou além do d3derr_inValidCall?

Foi útil?

Solução

Você precisa especificar um valor diferente para BackBufferFormat Porque apenas aplicativos em janela permitem o valor D3DFMT_UNKNOWN. Escolha um que seja suportado pelo seu dispositivo (você pode verificar usando CheckDeviceFormat ()).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top