Bonjours.
J'ai fait un cube 100cm avec 3D studio max 6 et j ai enregistre en .3ds
J ai ouvert ce .3ds avec 3D explorateur pour l' enregistre sous .cpp en opengl.
J ai enfin ouvert ce .cpp avec visual studio pour constater que le carre a bien ete traduit en openGL.
J ai essaye d'integre ce .cpp poiur afficher le carre dans une fenetre mais je n'y arrive pas. voici le code, qui dois-je metre dans draw ? ou bien comment l afficher depuis le .cpp principale en laissant ces code dans le fichier d origine ?
/*
This file was produced by 3D Exploration Plugin: CPP Export filter.
3D Exploration
Copyright (c) 1999-2000 X Dimension Software
WWW http://www.xdsoft.com/explorer/
eMail info@xdsoft.com
*/
#include <windows.h>
#include <GL\gl.h>
#include <GL\glu.h>
struct sample_MATERIAL{
GLfloat ambient[3];
GLfloat diffuse[3];
GLfloat specular[3];
GLfloat emission[3];
GLfloat alpha;
GLfloat phExp;
int texture;
};
static sample_MATERIAL materials [1] = {
{{0.117647f,0.117647f,0.117647f}, {0.776471f,0.878431f,0.341176f}, {0.752941f,0.752941f,0.752941f}, {0.0f,0.0f,0.0f}, 1.0f,8.0f,-1} //DefMat for Boîte01
};
// 8 Verticies
// 6 Texture Coordinates
// 6 Normals
// 12 Triangles
static BYTE face_indicies[12][9] = {
// Boîte01
{0,2,3 ,0,0,0 ,0,1,1 }, {3,1,0 ,0,0,0 ,1,0,0 }, {4,5,7 ,1,1,1 ,2,3,4 },
{7,6,4 ,1,1,1 ,4,5,2 }, {0,1,5 ,2,2,2 ,2,2,5 }, {5,4,0 ,2,2,2 ,5,5,2 },
{1,3,7 ,3,3,3 ,2,3,4 }, {7,5,1 ,3,3,3 ,4,5,2 }, {3,2,6 ,4,4,4 ,2,3,4 },
{6,7,3 ,4,4,4 ,4,5,2 }, {2,0,4 ,5,5,5 ,2,2,5 }, {4,6,2 ,5,5,5 ,5,5,2 }
};
static GLfloat vertices [8][3] = {
{-0.5f,-0.5f,-0.5f},{0.5f,-0.5f,-0.5f},{-0.5f,0.5f,-0.5f},
{0.5f,0.5f,-0.5f},{-0.5f,-0.5f,0.5f},{0.5f,-0.5f,0.5f},
{-0.5f,0.5f,0.5f},{0.5f,0.5f,0.5f}
};
static GLfloat normals [6][3] = {
{0.0f,0.0f,-1.0f},{0.0f,0.0f,1.0f},{0.0f,-1.0f,0.0f},
{1.0f,0.0f,0.0f},{0.0f,1.0f,0.0f},{-1.0f,0.0f,0.0f}
};
static GLfloat textures [6][2] = {
{0.0f,0.0f},{1.0f,0.0f},{0.0f,2.0f},
{1.0f,2.0f},{1.0f,1.0f},{0.0f,1.0f}
};
/*Material indicies*/
/*{material index,face count}*/
static int material_ref [1][2] = {
{0,12}
};
void MyMaterial(GLenum mode,GLfloat *f,GLfloat alpha)
{
GLfloat d[4];
d[0]=f[0];
d[1]=f[1];
d[2]=f[2];
d[3]=alpha;
glMaterialfv (GL_FRONT_AND_BACK,mode,d);
}
/*
* SelectMaterial uses OpenGL commands to define facet colors.
*
* Returns:
* Nothing
*/
void SelectMaterial(int i)
{
//
// Define the reflective properties of the 3D Object faces.
//
glEnd();
GLfloat alpha=materials[i].alpha;
MyMaterial (GL_AMBIENT, materials[i].ambient,alpha);
MyMaterial (GL_DIFFUSE, materials[i].diffuse,alpha);
MyMaterial (GL_SPECULAR, materials[i].specular,alpha);
MyMaterial (GL_EMISSION, materials[i].emission,alpha);
glMaterialf (GL_FRONT_AND_BACK,GL_SHININESS,materials[i].phExp);
glBegin(GL_TRIANGLES);
};
GLint Gen3DObjectList()
{
int i;
int j;
GLint lid=glGenLists(1);
int mcount=0;
int mindex=0;
glNewList(lid, GL_COMPILE);
glBegin (GL_TRIANGLES);
for(i=0;i<sizeof(face_indicies)/sizeof(face_indicies[0]);i++)
{
if(!mcount)
{
SelectMaterial(material_ref[mindex][0]);
mcount=material_ref[mindex][1];
mindex++;
}
mcount--;
for(j=0;j<3;j++)
{
int vi=face_indicies[i][j];
int ni=face_indicies[i][j+3];//Normal index
int ti=face_indicies[i][j+6];//Texture index
glNormal3f (normals[ni][0],normals[ni][1],normals[ni][2]);
glTexCoord2f(textures[ti][0],textures[ti][1]);
glVertex3f (vertices[vi][0],vertices[vi][1],vertices[vi][2]);
}
}
glEnd ();
glEndList();
return lid;
};