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

OpenGL Discussion :

pleeeeeins de polys et erreur windows...


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Inscrit en
    Août 2004
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 43
    Par défaut pleeeeeins de polys et erreur windows...
    bonjour à tous !
    je développe actuellement une application en C++ avec OpenGL, il s'agit d'un jeu d'échec offrant une interface en 3D...

    j'ai cependant un problème, j'ai modelé un échiquier en assez haute résolution et je cherche maintenant à l'afficher...

    à noter que lorsque je faisais mes tests avec un échiquier "basique" (4 grids pour le contour, + 1 pour le plateau, je ne rencontrais aucun problème...
    ais maintenant, losque je veux afficher mon échiquier haute résolution, il se produit une erreur windows :

    ChessMaster3D.exe a rencontré un problème et doit fermer. Nous vous prions de nous excuser pour le désagrément encouru... etc.
    et le programme s'arrête avant l'afichage du premier frame...

    j'ai ocalisé la ligne qui produit cette erreur (si je place un // devant, plus de problèmes), c'est celle çi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glDrawArrays(GL_TRIANGLES, 0, echiquier_numvertices);
    avec ceci juste avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glInterleavedArrays(GL_T2F_N3F_V3F, 0, echiquier_meshdata);
    , ou echiquier_mesh_data est un énorme tableau de 4900 floats à peu près...

    voivi le coe de la fonction qui est censé afficher le tout :

    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
    41
    42
    void Echiquier::display(GEO3_TEXTURE *tex, int mode)
    {
    	glRotatef(-90.0, 1.0, 0.0, 0.0);
     
    	if(mode == GL_RENDER)
    	{
    		glBindTexture(GL_TEXTURE_2D, tex[3]);	// ECHIQUIER
     
    		glInterleavedArrays(GL_T2F_N3F_V3F, 0, echiquier_meshdata);
    		glDrawArrays(GL_TRIANGLES, 0, echiquier_numvertices);
     
    // AFFICHAGE DU PETIT VERTEX ARRAY, VALIDE....
    		glBindTexture(GL_TEXTURE_2D, tex[2]);	// PLATEAU
     
    		glInterleavedArrays(GL_T2F_N3F_V3F, 0, plateau_meshdata);
    		glDrawArrays(GL_TRIANGLES, 0, plateau_numvertices);
     
    		glDisable(GL_DEPTH_TEST);				// REFLET
    		glEnable(GL_BLEND);
    		glBlendFunc(GL_SRC_ALPHA, GL_ONE);
     
    		glBindTexture(GL_TEXTURE_2D, tex[2]);
     
    		glEnable(GL_TEXTURE_GEN_S);
    		glEnable(GL_TEXTURE_GEN_T);
     
    		glDrawArrays(GL_TRIANGLES, 0, plateau_numvertices);
     
    		glDisable(GL_BLEND);
    		glEnable(GL_DEPTH_TEST);
    	}
     
    	// ... code source sans intérêt...
     
    	if(mode == GL_RENDER)
    	{
    		glDisable(GL_TEXTURE_GEN_S);
    		glDisable(GL_TEXTURE_GEN_T);
    	}
     
    	return;
    }
    voilà... si je commente le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glDrawArrays(GL_TRIANGLES, 0, echiquier_numvertices);
    , j'obtiens bel et bien mon plateau avec ses textures, tout marche nickel, etc...

    maintenant si je veux afficher lechiquier au complet (je décomente donc la ligne... ça bug)...

    à noter que les données du tableau sont sures à 99%, car elles sont générés par le même script (MaxScript) qui génère celles du plateau, qui s'affiche normalement...

    la seule différence entre les deux objets et en fait la taille du tableau, l'un possède 70 floats, l'autre près de 5000

    pour mettre ces données en émoire, j'ai crée un fichier header dans lequel je éclare mes tableaux en static const... cette methode est-elle bonne ?
    c'est la première fois que je me vois confronté à un tel problème, je ne pense pas qu'il s'agisse d'un problème lié à opengl directement, ausi je me pose des questions...

    je n'obtiens aucune erreur OpenGL juste avant l'appel au glDrawArray qui me pose problème, je compile avec Visual c++ 6.0 sous windows xp sp2...

    voili, je reste sans réponse devant un tel bug, d'autant plus que j'arriavsi à aficher avant ces deux objets sans passer par les VertexArray (en bouclant sur le nombre de vertex de l'objet...)

    si vous entrevoyez une bribe d'ébauche d'informations qui pourrait me sortir de là et m'éviter de looooongue snuits blanches

    je ne sais pas si c'est intéréssant, mais je fournis la déclaration ds deux tableaux de vertex...

    merci !

  2. #2
    Membre confirmé

    Inscrit en
    Août 2004
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 43
    Par défaut
    c'était tout con !! huhu
    echiquier_numvertices n'avait pas la bonne valeur, il fallait le diviser par 8 (nombre d'éléments dans le tableau pour un vertex)

    oulà, moi et l'opengl, ça fait vraiment un baye, désolé du squattage inutile...

  3. #3
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 577
    Par défaut
    D'où l'utilité de créer des classes pour les vertex et d'utiliser des sizeof

    par contre je te conseille dès que possible de mettre tes données en chargement depuis un fichier, un tableau static de plusieurs dizaines/centaines/milliers de données c'est pas terrible il est préférable de les mettre en dynamique dans ce cas
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  4. #4
    Membre confirmé

    Inscrit en
    Août 2004
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 43
    Par défaut
    ah ouais ?

    merci pour ce conseil, je vais ça illico...

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

Discussions similaires

  1. erreur windows.h
    Par mamag dans le forum MFC
    Réponses: 3
    Dernier message: 05/09/2005, 16h13
  2. Rapport d'erreurs Windows
    Par SteelBox dans le forum Windows
    Réponses: 12
    Dernier message: 22/08/2005, 17h34
  3. Message erreur Windows 16 bits
    Par francis m dans le forum Windows XP
    Réponses: 2
    Dernier message: 24/04/2005, 16h29
  4. Message d'erreur Windows lors de l'exécution de l'appli D6-
    Par kolac dans le forum Bases de données
    Réponses: 4
    Dernier message: 07/12/2004, 17h55
  5. Erreur windows lors du malloc
    Par Elessar dans le forum C
    Réponses: 5
    Dernier message: 16/12/2003, 08h53

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