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 énervant avec D3DXLoadMeshFromX


Sujet :

DirectX

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 36
    Points : 28
    Points
    28
    Par défaut Probleme énervant avec D3DXLoadMeshFromX
    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
     
    LPD3DXBUFFER materialBuffer;
    DWORD numMaterials;           
    LPD3DXMESH mesh;
    LPD3DXBUFFER r;
     
    // Load the mesh from the specified file
    HRESULT hr=D3DXLoadMeshFromX("teapot.x", D3DXMESH_SYSTEMMEM, 
                                 pd3dDevice, &r, 
                                 &materialBuffer,NULL, &numMaterials, 
                                 &mesh );
     
    	if(FAILED(hr))
    		int y=9;
     
    	D3DXMATERIAL* d3dxMaterials = (D3DXMATERIAL*)materialBuffer->GetBufferPointer();

    Voilà, à chaque fois que je l'utilise, la commande me retourne un FAILED. Evidemment, pd3dDevice est initialisé, et teapot.x est un fichier qui figure bien dans mes ressources, et télévhargé sur le net pour etre sur d'utiliser un bon format. Et pourtant, j'ai essayé plusieurs codes différents, des fois même des codes dispos sur le net, juste à compiler. D'aileurs, pas de pb à la compilation, mais une fois que je lance, ça plante à cette ligne. Si je veux continuer, il me met :
    Unhandled exception in .exe : 0xC0000005: Acces Violation

    En plus, le HRESULT que je trouve est inconnu au bataillon ! Ni un D3DERR_INVALIDCALL ni un E_OUTOFMEMORY comme il ets censé retourner en cas d'erreur.


    Est-ce que quelqu'un s'y connaitrait en DirectX, et me dirait si j'oublie pas quelque chose, ou si tout simplement il est possible qu'il y est un bug dans cette fonction ?
    [Merci de penser a la balise de code ,Farscape]

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour
    Deux choses qui peuvent avaoir été pas fait comme il fallait :
    -La création de pd3dDevice. (Et son initialisation)
    -Le mot clé D3DXMESH_SYSTEMMEM. (J'y crois moins)

    L'erreur
    Unhandled exception in .exe : 0xC0000005: Acces Violation
    Est, je crois, un problème de pointeur mal ou pas initialisé.

  3. #3
    Membre averti Avatar de Bob.Killer
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    336
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 336
    Points : 332
    Points
    332
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LPD3DXMESH mesh = NULL;

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 36
    Points : 28
    Points
    28
    Par défaut
    Je ne pense pas que ce soit un probleme d'initialisation de variables. Peut-etre de DirectX. Comme je vous l'ai dit, j'ai testé des codes que j'ai téléchargé, et le resultata est le meme. Y'aurait-il quelque chose de spécial à initialiser sur le Device DirectX. Il est initialisé, car j'arrive à afficher une fenetre noire, mais je ne sais pas si il y a des options indispensables pour cette fonction.

  5. #5
    Invité(e)
    Invité(e)
    Par défaut
    Citation Envoyé par Dmnbp7ip
    Y'aurait-il quelque chose de spécial à initialiser sur le Device DirectX.
    Ca peut arriver, c'est bien de cela dont je parlais, certaines options d'initialisation ne sont compatibles qu'avec certain types de cartes vidéos, donc montre nous ton code d'initialisation stp
    Ces erreurs d'incompatibilité n'apparaissent qu'à l'appel de certaines fonctions.

    Petit truc à tester sinon : remplacer "teapot.x" pour son chemin complet, genre "c:\\mon dossier\\teapot.x"

    ---edit lundi 13h50
    ET on pense au tag "résolu"

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 36
    Points : 28
    Points
    28
    Par défaut
    Aaaaahhhhhhhhh !
    Merci !!!!!!!!!!!!!

    Je viens de comprendre un truc qui m'a fait bloquer plusieurs heures !!!
    Il ne suffit pas d'ajouter les fichiers aux ressources avec Visual. Il faut mettre leur chemin complet (c'est un peu ridicule d'ailleurs). Voilà, c'était juste qu'il ne trouvait pas le fichier .x . Et là, j'ai l'air bête...

  7. #7
    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 : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Ta fonction ira toujours chercher le fichier sur le disque dur, pour charger une mesh à partir d'une ressource il faut utiliser D3DXLoadMeshFromXResource.

    Au niveau des chemins, il vaut mieux éviter de mettre un chemin global (le jour où tu executes ton appli ailleurs ça ne marchera plus), utilise des chemins relatifs.

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

Discussions similaires

  1. [String] Probleme incomprehensible avec split
    Par scorpiwolf dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 20/07/2004, 21h21
  2. [JTextAera][JScrollPane]Probleme mineur avec l'ascenseur
    Par Voxdei dans le forum Composants
    Réponses: 2
    Dernier message: 18/07/2004, 09h52
  3. [VB.NET] - Probleme Label avec Database
    Par codez dans le forum ASP.NET
    Réponses: 4
    Dernier message: 03/06/2004, 17h37
  4. probleme sql avec delphi
    Par lil_jam63 dans le forum Bases de données
    Réponses: 7
    Dernier message: 25/02/2004, 04h32
  5. probleme GRAVE avec directx 9
    Par l'arbre en plastique dans le forum DirectX
    Réponses: 3
    Dernier message: 02/09/2003, 23h59

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