IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

DirectX Discussion :

Probleme de CheckDeviceFormat() et CreateDevice()


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 36
    Par défaut Probleme de CheckDeviceFormat() et CreateDevice()
    Bonjour à tous !

    Je débute totalement en programation directX, et voilà que je bute déjà un soucis, pendant l'initialisation...

    J'ai fais pas mal de recherches et essayé plusieures variantes de codes en ce qui concerne l'appel à ces 2 méthodes (juste après la création de ma fenêtre windows et de la création du ID3DObject qui se passent par ailleurs sans encombres), quelques fût mes essais, ces appels échouent, et avec des résultats pour le moins étrange... La valeur de retour en effet est systématiquement 0x8876086c (pour l'une ou l'autre méthode), ce qui ne correspond probablement à aucun #define.

    J'ai du matos récent, et une cg dernière génération (7600GT), donc je ne pense pas que le problème soit hardware. Quelqu'un pourrait m'aiguiller ?

  2. #2
    Membre chevronné
    Avatar de Edouard Kaiser
    Profil pro
    Inscrit en
    Février 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2004
    Messages : 521
    Par défaut
    Peux tu nous donner ton code de creation du device et du checkformat ?

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    La valeur de retour en effet est systématiquement 0x8876086c (pour l'une ou l'autre méthode), ce qui ne correspond probablement à aucun #define.
    Dans les outils du SDK DirectX tu as un exécutable "Error lookup" qui te donne les correspondances. En l'occurence ici c'est D3DERR_INVALIDCALL.

    Donc effectivement, il faudrait voir le code.

  4. #4
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 36
    Par défaut
    heu, désolé les gars, je ne sais même pas réellement ce que j'ai changé (je suis un peu perdu dans tous ces paramètres aux nomx cryptiques...), mais maintenant ça semble s'initialiser sans problème, en tout cas mon D3DDevice n'est plus null...

    Pardon donc de vous avoir fait perdre votre temps, et merci au passage de m'avoir montrer la lumière via le petit outil de correspondance des erreurs DX

    Sinon, j'en profite quand même pour coller mon code qui marche (sans le check pour me simplifier la vie pour l'instant) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
            // Register the window class.
            WNDCLASSEX wc = { sizeof( WNDCLASSEX ), CS_OWNDC, &MsgProc, 0L, 0L,
                GetModuleHandle( nullptr ), nullptr, nullptr, nullptr, nullptr, mstrWinName.c_str(), nullptr };
            RegisterClassEx( &wc );
     
            // Create the application's window.
            mhwndHandler = CreateWindow( mstrWinName.c_str(), mstrWinName.c_str(), WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                150, 150, 800, 600, GetDesktopWindow(), nullptr, wc.hInstance, nullptr );
     
            //ShowWindow( mhwndHandler, SW_SHOW );
     
     
            // Attempt to create D3D environment ...
            if( ( mpD3DObject = Direct3DCreate9( D3D_SDK_VERSION ) ) == nullptr )
                throw EngineError( "Direct3D create failed", __FL__ );
     
     
            // Direct3D pixel Format Decription
            D3DPRESENT_PARAMETERS d3dpp;
            ZeroMemory( &d3dpp, sizeof( d3dpp ) );
     
            D3DDISPLAYMODE dm;
            mpD3DObject->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &dm);
     
            d3dpp.BackBufferWidth                = 800;
            d3dpp.BackBufferHeight                = 600;
            d3dpp.BackBufferCount                = 1;
            d3dpp.Windowed                       = true;
            d3dpp.SwapEffect                    = D3DSWAPEFFECT_COPY;
            d3dpp.BackBufferFormat                = dm.Format;
     
            // ... and device 
            if( FAILED( mpD3DObject->CreateDevice( D3DADAPTER_DEFAULT,
                D3DDEVTYPE_HAL, mhwndHandler, D3DCREATE_SOFTWARE_VERTEXPROCESSING | D3DCREATE_MULTITHREADED,
                &d3dpp, &mpD3DDevice ) ) )
                throw EngineError( "Direct3D device creation failed", __FL__ );
     
     
            ToolInWonder::MyLog::GetInstance().LogMessage( "WideEngine started.", __FL__ );

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Pense au bouton si c'est ok

  6. #6
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 36
    Par défaut
    Super ce bouton, dites-moi il est bien fait vot' ptit forum là, dire que partout on en est encore à éditer le titre pour ajouter la balise

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/07/2007, 15h09
  2. Problemes de compilations exemple createdevice.cpp de Direct
    Par Maverick357 dans le forum DirectX
    Réponses: 8
    Dernier message: 03/02/2005, 15h29
  3. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01
  4. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  5. [Kylix] Probleme de nombre flottant!!
    Par yopziggy dans le forum EDI
    Réponses: 5
    Dernier message: 02/05/2002, 10h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo