J'aurais voulu avoir un ptit coup de pouce, svp?
J'ai crée un loader de modele 3D .obj, mon dessin s'affiche mais là au lieu d'avoir un cube j'ai un triangle à 4 côtés.
Voici mon code :
#include "CObjet3D.h"
#include <GL/gl.h>
#include <iostream>
#include <fstream>
usingnamespace std;
void Cobjet3D::ChargerObjet(char *fichier)
{
// on ouvre le fichier
ifstream FichierSource(fichier);
// on vérifie s'il est bien ouvert
if(!FichierSource)
cout << "Erreur: fichier introuvable" << endl;
else
{
// on lit dans le fichier le nombre de points puis de faces
FichierSource >> NbVertex
>> NbFaces;
// on définit l'espace mémoire necessaire au stockage des points
vertices = new VERTEX[NbVertex];
// on stocke les points en mémoire
for(unsignedint i=0; i<NbVertex; i++)// pour chaque point
{
FichierSource >> vertices[i].x// lecture de la coordonnée x
>> vertices[i].y// de la coordonnée y
>> vertices[i].z; // et de la coordonnée z
}
// on définit l'espace mémoire necessaire au stockage des faces
faces = new FACE[NbFaces];
// on stocke les faces en mémoire
for(unsignedint i=0; i<NbFaces; i++)// pour chaque face
{
FichierSource >> faces[i].a// lecture du point a
>> faces[i].b// du point b
>> faces[i].c; // et du point c
}
FichierSource.close(); // on ferme le fichier
}
}
void Cobjet3D::AfficherObjet()
{
glPushMatrix();
glBegin(GL_TRIANGLES);
for(unsignedint i=0; i<NbFaces; i++)
{
glColor3ub(255, 100, 0);
glVertex3f(vertices[ faces[i].a].x,
vertices[ faces[i].a].y,
vertices[ faces[i].a].z);
glVertex3f(vertices[ faces[i].b].x,
vertices[ faces[i].b].y,
vertices[ faces[i].b].z);
glVertex3f(vertices[ faces[i].c].x,
vertices[ faces[i].c].y,
vertices[ faces[i].c].z);
}
glEnd();
glPopMatrix();
}
void Cobjet3D::LibereObjet()
{
if(vertices)
{
delete[] vertices;
vertices = NULL;
}
if(faces)
{
delete[] faces;
faces = NULL;
}
}
Et voici mon .obj :
8
12
-10.1-7.20.0
-7.3-7.20.0
-10.1-4.40.0
-7.3-4.40.0
-10.1-7.22.8
-7.3-7.22.8
-10.1-4.42.8
-7.3-4.42.8
134
421
568
875
126
651
248
862
437
784
315
573
Merci,
Problème affichage d'un dessin
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.