|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||||
|
Invité de passage
![]() Étudiant Inscription : octobre 2012 Messages : 25 ![]() |
Mon but est de creer une class me permettant d'afficher une sphere.
Mais le constructeur me pose problème. Il n'y a pas de problème lors du build, le problème survient lors du deguger. J'y comprend pas grand chose au debugeur et j’espère que quelqu’un pourra m'aider sur ce point là, il me sort Citation:
Je suis débutant en openGL donc si vous trouvez que je fait n'importe quoi hésiter pas à me le dire ^^ le header Code :
le constructeur du cpp Code :
|
|||||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : juin 2008 Messages : 7 631 ![]() |
Salut,
Utilises des std::vector à la place des allocations dynamiques à la main. Rien n'empêche de passer ensuite ceux-ci à openGL via un &var[0], std::vector te garantissant la continuité des éléments du tableau. Une fois que tu as ces tableaux, à mon avis, penses en terme d'algorithme autant se peut plutôt qu'en boucle for (ça évitera le bug ci-dessous). Ton bug peut venir du fait que lorsque tu initialises tes tableaux, tu incrémentes directement le pointeur obtenu à l'allocation (*indices++ = blabla;). Lorsque tu copies ensuite ce tableau vers celui de ta classe (m_indices[i] = indices[i];), le pointeur (indices) part de la dernière case allouée du tableau et va donc adresser une zone mémoire invalide. |
|
|
20
|
|
|
#3 | |||||||
|
Invité de passage
![]() Étudiant Inscription : octobre 2012 Messages : 25 ![]() |
Merci 3DArchi pour ta réponse.
J'ai modifié le code à partir de ce que tu ma dit: Code :
Code :
Mais je n'ai pas compris ce que tu endentai par le pensé en algorithme et ne pas utiliser les boucle for. Peut tu donner un petit exemple? Puis j'ai tester l'affichage et il plante encore dans le debugeur :/ voila la methode: Code :
Voila ce que le debugeur me dit : Citation:
|
|||||||
|
|
00
|
|
|
#4 | |
![]() ![]() Inscription : juin 2008 Messages : 7 631 ![]() |
Salut,
Citation:
Je ne me souviens plus très bien de OpenGL mais n'y a-t-il pas une incompatibilité à passer GL_UNSIGNED_INT alors que ton vecteur est, si j'ai bien compris, std::vector<unsigned short>. Ce devrait plutôt être std::vector<unsigned int> ou sinon GL_UNSIGNED_INT ? |
|
|
|
10
|
|
|
#5 |
![]() ![]() Cyrille Network programmer Inscription : juin 2010 Messages : 1 543 ![]() |
Par contre, si tu affiches un cercle, c'est sûrement du GL_LINES et non GL_QUADS qu'il faudra utiliser.
Enfin je n'ai pas touché ces constantes depuis un moment maintenant :/ Peut-être que ton erreur vient du glsl et non du C++ ? |
|
|
00
|
|
|
#6 | |
|
Invité de passage
![]() Étudiant Inscription : octobre 2012 Messages : 25 ![]() |
Encore une fois tu avait raison 3DArchi merci pour ton aide.
Citation:
Mais bon jamais 2 sans 3 j'ai un nouveau problème xD Je n'ai plus de plantage lors du débogage, mais je n'ai pas non plus de sphère qui apparait. Je me dit peut être qu'elle y est mais en noir, je n'ai pas mit de couleur(et je n'ai aucune idée en quelle couleur ça dessine de base). Donc je vais essayer de colorer. |
|
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Étudiant Inscription : octobre 2012 Messages : 25 ![]() |
C'est bon j'ai réussi c’était bien la couleur qui manquai
Donc j'ai bien ma sphère maintenant |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com