1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
// Skybox.cpp: implementation of the Skybox class.
//
//////////////////////////////////////////////////////////////////////
#include "Skybox.h"
#include "glext.h"
#include "glut.h"
PFNGLMULTITEXCOORD2FARBPROC glMultiTexCoord2fARB = NULL;
PFNGLACTIVETEXTUREARBPROC glActiveTextureARB = NULL;
PFNGLCLIENTACTIVETEXTUREARBPROC glClientActiveTextureARB = NULL;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
Skybox::Skybox()
{
}
Skybox::~Skybox()
{
}
void Skybox::DefinitTexture(Texture *t1,Texture *t2,Texture *t3,
Texture *t4,Texture *t5,Texture *t6)
{
skybox_front = t1;
skybox_back = t2;
skybox_top = t3;
skybox_bottom = t4;
skybox_right = t5;
skybox_left = t6;
box_ambient[0]=0.5f; box_ambient[1]=0.5f; box_ambient[2]=0.5f; box_ambient[3]=1.0f;
box_diffuse[0]=0.8f; box_diffuse[1]=0.8f; box_diffuse[2]=0.8f; box_diffuse[3]=1.0f;
box_specular[0]=0.0f; box_specular[1]=0.0f; box_specular[2]=0.0f; box_specular[3]=1.0f;
box_shininess[0]=1.0f;
}
void Skybox::affiche()
{
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, box_ambient);
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, box_diffuse);
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, box_specular);
glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, box_shininess);
/* Unité de texture 0 activée */
glActiveTextureARB(GL_TEXTURE0_ARB);
glEnable(GL_TEXTURE_2D);
/* Texture brick pour l'unité 0 */
skybox_front->utilise();
/* Unité de texture 1 activée */
glActiveTextureARB(GL_TEXTURE1_ARB);
/* Texture lightmap pour l'unité 1 */
skybox_back->utilise();
//glEnable (GL_TEXTURE_2D);
//skybox_front->utilise();
glNormal3f( 0.0f, 0.0f, -1.0f);
glBegin ( GL_QUADS );
// Face de devant
//glTexCoord2f(1.0f, 1.0f);
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 1.0f, 1.0f);
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 1.0f, 1.0f);
glVertex3f(-150.0f, -150.0f, 150.0f);
//glTexCoord2f(0.0f, 1.0f);
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0.0f, 1.0f);
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 0.0f, 1.0f);
glVertex3f( 150.0f, -150.0f, 150.0f);
//glTexCoord2f(0.0f, 0.0f);
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0.0f, 0.0f);
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 0.0f, 0.0f);
glVertex3f( 150.0f, 150.0f, 150.0f);
//glTexCoord2f(1.0f, 0.0f);
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 1.0f, 0.0f);
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 1.0f, 0.0f);
glVertex3f(-150.0f, 150.0f, 150.0f);
glEnd();
// idem pour les autres faces ...
} |