ibrakola
Inscrit le: 15 Juin 2012 Messages: 4
|
Posté le: Mer Juin 20, 2012 16:39 Sujet du message: |
|
|
Voici le code OpenGl que j'utilise,
Code: | void setupPixelFormat(HDC hDC)
{
PIXELFORMATDESCRIPTOR pfd =
{
sizeof(PIXELFORMATDESCRIPTOR), //taille du descripteur de format
1, //version
PFD_SUPPORT_OPENGL |
PFD_DRAW_TO_WINDOW |
PFD_DOUBLEBUFFER, //Propriétés
PFD_TYPE_RGBA, //Mode de couleurs
16, //Bits de couleur
0, 0, 0, 0, 0, 0, //Paramètres des couleurs
0,0, //Paramètres alpha
0,0, 0, 0, 0, //Paramètres du buffer d'accumulation
32, //Bits de profondeur
0, //Bits du buffer stencil
0, //Nombre de buffers auxiliaires
0, //ignoré (obsolète)
0, //réservé
0, //ignoré (obsolète)
0, //Couleur de transparence
0 //Ignoré (obsolète)
};
int pixelFormat;
pixelFormat = ChoosePixelFormat(hDC, &pfd);
if (!pixelFormat)
{
MessageBox(WindowFromDC(hDC),
"Mode graphique non supporté.",
"Problème",
MB_ICONERROR | MB_OK);
exit(1);
}
if (!SetPixelFormat(hDC, pixelFormat, &pfd))
{
MessageBox(WindowFromDC(hDC),"Mode graphique non supporté.",
"Problème", MB_ICONERROR | MB_OK);
exit(1);
}
}
void initgl (void)
{
GLfloat light0_pos[4] = { 0.5f, 0.5f, 0.5f, 0.0f };
GLfloat light0_color[4] = { .6f, .6f, .6f, 1.0f }; //* lumière blanche
GLfloat light1_pos[4] = { 50.0f, 50.0f, -50.0f, 0.0f };
GLfloat light1_color[4] = { .6f, .6f, .6f, 1.0f }; //* lumière blanche
GLfloat light2_pos[4] = { -50.0f, 0.5f, 0.5f, 0.0f };
GLfloat light2_color[4] = { .6f, .6f, .6f, 1.0f }; //* lumière blanche
GLfloat light3_pos[4] = { 50.0f, 50.0f, -50.0f, 0.0f };
GLfloat light3_color[4] = { .6f, .6f, .6f, 1.0f }; //* lumière blanche
GLfloat light4_pos[4] = { 0.5f, 0.5f, 0.5f, 0.0f };
GLfloat light4_color[4] = { .6f, .6f, .6f, 1.0f }; //* lumière blanche
GLfloat light5_pos[4] = { 50.0f, 50.0f, -50.0f, 0.0f };
GLfloat light5_color[4] = { .6f, .6f, .6f, 1.0f }; //* lumière blanche
GLfloat light6_pos[4] = { 50.0f, 50.0f, 50.0f, 0.0f };
GLfloat light6_color[4] = { .6f, .6f, .6f, 1.0f }; //* lumière blanche
//* remove back faces
glDisable(GL_CULL_FACE);
glEnable(GL_DEPTH_TEST);
//* speedups
glEnable(GL_DITHER);
glShadeModel(GL_SMOOTH);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
glHint(GL_POLYGON_SMOOTH_HINT, GL_FASTEST);
//* lumières *
glLightfv(GL_LIGHT0, GL_POSITION, light0_pos);
glLightfv(GL_LIGHT0, GL_DIFFUSE, light0_color);
glEnable(GL_LIGHT0);
glLightfv(GL_LIGHT1, GL_POSITION, light1_pos);
glLightfv(GL_LIGHT1, GL_DIFFUSE, light1_color);
glEnable(GL_LIGHT1);
glLightfv(GL_LIGHT2, GL_POSITION, light2_pos);
glLightfv(GL_LIGHT2, GL_DIFFUSE, light2_color);
glEnable(GL_LIGHT2);
glLightfv(GL_LIGHT3, GL_POSITION, light3_pos);
glLightfv(GL_LIGHT3, GL_DIFFUSE, light3_color);
glLightfv(GL_LIGHT4, GL_POSITION, light4_pos);
glLightfv(GL_LIGHT4, GL_DIFFUSE, light4_color);
glLightfv(GL_LIGHT5, GL_POSITION, light5_pos);
glLightfv(GL_LIGHT5, GL_DIFFUSE, light5_color);
glLightfv(GL_LIGHT6, GL_POSITION, light6_pos);
glLightfv(GL_LIGHT6, GL_DIFFUSE, light6_color);
glEnable(GL_LIGHTING);
glColorMaterial(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE);
glEnable(GL_COLOR_MATERIAL);
}
void draw_axes( float scale )
{
glDisable( GL_LIGHTING );
glPushMatrix();
glScalef( scale, scale, scale );
glLineWidth(2);
glBegin( GL_LINES );
glColor3f( 1, 0, 0 );
glVertex3f( .8f, -0.05f, 0 ); glVertex3f( 1, -0.25f, 0 ); //* Letter X
glVertex3f( 0.8f, -0.25f, 0 ); glVertex3f( 1, -0.05f, 0 );
glVertex3f( 0, 0, 0 ); glVertex3f( 1, 0, 0 ); //* X axis
glColor3f( 0, 1, 0);
glVertex3f( -.25f, 0.8f, 0 ); glVertex3f( -.05f, 1, 0 ); //* Letter Y
glVertex3f( -.25f, 1, 0 ); glVertex3f( -.15f, 0.9f, 0 );
glVertex3f( 0, 0, 0 ); glVertex3f( 0, 1, 0 ); //* Y axis
if (info_valeur(58) > 20)
{
glColor3f( 0, 0, 1 );
glVertex3f( 0, 0, 0 ); glVertex3f( 0.0f, 0.0f, 1.0f ); //* Z axis
//Ici je place la lettre Z sur l'axe Z
glVertex3f( -0.1f, 0, 0.8f); glVertex3f( -0.3f, 0, 0.8f);
glVertex3f( -0.1f, 0.2f, 0.8f); glVertex3f( -0.3f, 0, 0.8f);
glVertex3f( -0.1f, 0.2f, 0.8f); glVertex3f( -0.3f, 0.2f, 0.8f);
}
glEnd();
glLineWidth(1);
glPopMatrix();
glEnable( GL_LIGHTING );
}
void draw_axesXY( float scale )
{
glDisable( GL_LIGHTING );
glPushMatrix();
glScalef( scale, scale, scale );
glLineWidth(2);
glBegin( GL_LINES );
glColor3f( 1, 0, 0 );
glVertex3f( .8f, -0.05f, 0 ); glVertex3f( 1, -0.25f, 0 ); //* Letter X
glVertex3f( 0.8f, -0.25f, 0 ); glVertex3f( 1, -0.05f, 0 );
glVertex3f( 0, 0, 0 ); glVertex3f( 1, 0, 0 ); //* X axis
glColor3f( 0, 1, 0);
glVertex3f( -.25f, 0.8f, 0 ); glVertex3f( -.05f, 1, 0 ); //* Letter Y
glVertex3f( -.25f, 1, 0 ); glVertex3f( -.15f, 0.9f, 0 );
glVertex3f( 0, 0, 0 ); glVertex3f( 0, 1, 0 ); //* Y axis
//glColor3f ( GetBValue(info->couleur_conteneur)/255.0f, GetGValue(info->couleur_conteneur)/255.0f,0);
if (info_valeur(58) > 20)
{
glColor3f( 255, 255, 255 );
glVertex3f( 0, 0, 0 ); glVertex3f( 0.0f, 0.0f, 1.0f ); //* Z axis
//Ici je place la lettre Z sur l'axe Z
glVertex3f( -0.1f, 0, 0.8f); glVertex3f( -0.3f, 0, 0.8f);
glVertex3f( -0.1f, 0.2f, 0.8f); glVertex3f( -0.3f, 0, 0.8f);
glVertex3f( -0.1f, 0.2f, 0.8f); glVertex3f( -0.3f, 0.2f, 0.8f);
}
glEnd();
glLineWidth(1);
glPopMatrix();
glEnable( GL_LIGHTING );
}
void draw_axesYZ( float scale )
{
glDisable( GL_LIGHTING );
glPushMatrix();
glScalef( scale, scale, scale );
glLineWidth(2);
glBegin( GL_LINES );
glColor3f( 0, 0, 1 );
glVertex3f( 1, -0.25f, 0); glVertex3f( 0.8f, -0.25f, 0);
glVertex3f( 1, -0.05f, 0); glVertex3f( 0.8f, -0.25f, 0);
glVertex3f( 1, -0.05f, 0); glVertex3f( 0.8f, -0.05f, 0);
glVertex3f( 0, 0, 0 ); glVertex3f( 1, 0, 0 ); //* X axis
glColor3f( 0, 1, 0);
glVertex3f( -.25f, 0.8f, 0 ); glVertex3f( -.05f, 1, 0 ); //* Letter Y
glVertex3f( -.25f, 1, 0 ); glVertex3f( -.15f, 0.9f, 0 );
glVertex3f( 0, 0, 0 ); glVertex3f( 0, 1, 0 ); //* Y axis
//glColor3f ( GetBValue(info->couleur_conteneur)/255.0f, GetGValue(info->couleur_conteneur)/255.0f,0);
if (info_valeur(58) > 20)
{
glColor3f( 255, 255, 255 );
glVertex3f( 0, 0, 0 ); glVertex3f( 0.0f, 0.0f, 1.0f ); //* Z axis
//Ici je place la lettre Z sur l'axe Z
glVertex3f( -0.1f, 0, 0.8f); glVertex3f( -0.3f, 0, 0.8f);
glVertex3f( -0.1f, 0.2f, 0.8f); glVertex3f( -0.3f, 0, 0.8f);
glVertex3f( -0.1f, 0.2f, 0.8f); glVertex3f( -0.3f, 0.2f, 0.8f);
}
glEnd();
glLineWidth(1);
glPopMatrix();
glEnable( GL_LIGHTING );
}
void draw_axesXZ( float scale )
{
glDisable( GL_LIGHTING );
glPushMatrix();
glScalef( scale, scale, scale );
glLineWidth(2);
glBegin( GL_LINES );
glColor3f( 1, 0, 0 );
glVertex3f( .8f, -0.05f, 0 ); glVertex3f( 1, -0.25f, 0 ); //* Letter X
glVertex3f( 0.8f, -0.25f, 0 ); glVertex3f( 1, -0.05f, 0 );
glVertex3f( 0, 0, 0 ); glVertex3f( 1, 0, 0 ); //* X axis
glColor3f( 0, 0, 1 );
glVertex3f( -0.2f, 1, 0); glVertex3f( -0.4f, 1, 0);
glVertex3f( -0.2f, 1, 0); glVertex3f( -0.4f, 0.8f, 0);
glVertex3f( -0.2f, 0.8f, 0); glVertex3f( -0.4f, 0.8f, 0);
glVertex3f( 0, 0, 0 ); glVertex3f( 0, 1, 0 ); //* Y axis
//glColor3f ( GetBValue(info->couleur_conteneur)/255.0f, GetGValue(info->couleur_conteneur)/255.0f,0);
if (info_valeur(58) > 20)
{
glColor3f( 255, 255, 255 );
glVertex3f( 0, 0, 0 ); glVertex3f( 0.0f, 0.0f, 1.0f ); //* Z axis
//Ici je place la lettre Z sur l'axe Z
glVertex3f( -0.1f, 0, 0.8f); glVertex3f( -0.3f, 0, 0.8f);
glVertex3f( -0.1f, 0.2f, 0.8f); glVertex3f( -0.3f, 0, 0.8f);
glVertex3f( -0.1f, 0.2f, 0.8f); glVertex3f( -0.3f, 0.2f, 0.8f);
}
glEnd();
glLineWidth(1);
glPopMatrix();
glEnable( GL_LIGHTING );
} |
|
|