Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: [RESOLU]Petit problème (mon cube ne s'affiche pas)  (Lu 2378 fois)

0 Membres et 1 Invité sur ce sujet

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
[RESOLU]Petit problème (mon cube ne s'affiche pas)
« le: Novembre 05, 2013, 09:04:56 am »
Salut,

j'ai essayé de faire une librairies SFML-LIKE mais pour la 3D. (Les classes sont les même que celles de la SFML mais, elles permettrons en plus de dessiner des objets en 3D)

Tout baigne à part que (je ne sais pas pour quelle raison) opengl ne veut pas me dessiner des objets en 3D. :(

Hors que lorsque je fais des appels opengl directement dans une sf::Window ça marche, bref...

Voici un lien vers un code minimal qui reproduit le problème : http://www.partage-facile.com/JLQQ4SJ934/sfml3d.rar.html

Vous pouvez télécharger le fichier ?
« Modifié: Novembre 06, 2013, 01:06:20 pm par Lolilolight »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Petit problème avec glDrawArrays. (mon cube ne s'affiche pas)
« Réponse #1 le: Novembre 05, 2013, 09:07:25 am »
Un code minimal dans une archive de 28 Mo ? Sans déconner ?

Un code vraiment minimal doit pouvoir être posté tel quel sur le forum, ça ne devrait normalement pas dépasser quelques dizaines de lignes.
Laurent Gomila - SFML developer

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Petit problème avec glDrawArrays. (mon cube ne s'affiche pas)
« Réponse #2 le: Novembre 05, 2013, 09:14:40 am »
Bah, y'a pas vraiment moyen de faire un code minimal avec ce genre de trucs, car pour pouvoir dessiner il faut, les classes RenderTarget, Vertex, VertexArray, View, RenderWindow, Drawable + les classes de Transformation + les classes persos que j'ai faîtes (cube, myrenderwindow, dynamicdrawableentity, ...)

J'ai du en plus mettre la classe Texture dans le projet. (J'ai dis dans un autre post pourquoi)

PS : bon j'avoue y'a quelques classes qui sont dans l'archive dont je ne me sert pas.

« Modifié: Novembre 05, 2013, 09:16:53 am par Lolilolight »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Petit problème avec glDrawArrays. (mon cube ne s'affiche pas)
« Réponse #3 le: Novembre 05, 2013, 02:00:55 pm »
Alors tu n'as pas compris le concept de code minimal.

Un code minimal ce n'est pas "le morceau minimal de ton projet qui permet de reproduire le problème", c'est bien souvent "un morceau de code écrit depuis zéro qui permet de reproduire le problème avec le minimum de dépendences à tes propres classes".

Si tu essayes de debugger au milieu de tes dizaines de classes persos, sans avoir aucune idée de ce qui merde, tu vas y perdre des journées entières sans pour autant progresser. Le but est justement de partir d'une base neutre, qui marche (un sf::Window + un setup minimal OpenGL), et d'y ajouter petit à petit ton propre code, tes diverses abstractions, jusqu'à ce que ça pète. Et là tu auras mis le doigt très précisément sur la cause de l'erreur. C'est infaillible.
Laurent Gomila - SFML developer

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Petit problème avec glDrawArrays. (mon cube ne s'affiche pas)
« Réponse #4 le: Novembre 05, 2013, 03:45:18 pm »
Bon finalement j'ai trouvé c'est la fonction getGlMatrix qui n'allait pas, et puis, j'ai recréer un nouveau projet et j'ai recommencer à partir d'un bête sf::Window comme tu m'as dis.

j'ai changé ma fonction, au lieu de renvoyer un tableau de float, elle prend un tableau de float en paramètre et le modifie et là ça marche, c'est donc le retour de mon tableau de float qui merdait quand je le passais à glLoadMatrixf, je ne sais pas pourquoi...

« Modifié: Novembre 05, 2013, 03:53:36 pm par Lolilolight »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Petit problème avec glDrawArrays. (mon cube ne s'affiche pas)
« Réponse #5 le: Novembre 05, 2013, 04:12:24 pm »
Tu ne peux pas renvoyer un tableau défini localement en retour d'une fonction. Ca ne renvoie qu'un pointeur vers le tableau, donc si le tableau est local à la fonction, le pointeur renvoyé pointe vers des données qui n'existent déjà plus.
Laurent Gomila - SFML developer

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
[RESOLU]Re : Petit problème avec glDrawArrays. (mon cube ne s'affiche pas)
« Réponse #6 le: Novembre 05, 2013, 05:29:24 pm »
Ha ok je pensais que comme les tableaux sont des pointeurs que les données seraient quand même gardées comme si j'allouerai un pointeur dans la fonction, ok bah tant pis je vais alloué le tableau dynamiquement là, ça devrait aller mieux.

Bref, j'ai réussi à afficher un cube et j'ai réussi à faire une free-fly caméra c'est déjà une bonne chose. :P

Il ne me reste plus que les transformations sur les objets à tester.
« Modifié: Novembre 06, 2013, 01:06:43 pm par Lolilolight »

 

anything