2010-11-02 3 views
1

J'essaie de créer un périphérique DirectX en plein écran (jusqu'à ce moment où j'ai été créé), mais le périphérique ne sera pas créé et je deviendrai invalide appel HR échouer.Création d'un périphérique DirectX en plein écran provoque D3DERR_INVALIDCALL

Ceci est mon code:

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 

avis 'md3dPP.Windowed = false;', si c'est vrai que le dispositif crée en mode fenêtré. Je suis sous l'impression que j'ai fait une erreur dans certaines de mes valeurs par défaut mais je n'ai aucune idée de l'endroit où chercher. Existe-t-il un moyen d'obtenir un rapport plus détaillé sur les raisons pour lesquelles la création du périphérique a échoué au-delà de D3DERR_INVALIDCALL?

Répondre

4

Vous devez spécifier une valeur différente pour BackBufferFormat car seules les applications fenêtrées autorisent la valeur D3DFMT_UNKNOWN. Choisissez celui qui est pris en charge par votre appareil (vous pouvez vérifier en utilisant CheckDeviceFormat()).