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 95 96 97 98 99 100 101 102 103 104 105 106 107 108
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer
glEnable(GL_BLEND);
glLoadIdentity();
switch(choixCamera)
{
case 0 :
glLightfv(GL_LIGHT0, GL_POSITION, camera->getLightPosition());
camera->look();
break;
case 1 :
cameraFree->look();
glLightfv(GL_LIGHT0, GL_POSITION, cameraFree->getLightPosition());
break;
}
//on dessine le maillage(sans la forme)
if(maillage!=NULL)
maillage->dessinerOpenGL();
//on eteint la lumiere pour afficher le repere et la texture
glDisable(GL_LIGHTING);
glEnable(GL_TEXTURE_2D);
.....
//images
//glDisable(GL_LIGHT0);
glColor3f(1.0f,1.0f,1.0f);
glBindTexture(GL_TEXTURE_2D,*texture);
if(indZ >= 0)
{
float iZ = indZ*sizeImage/maxPuiss2;
glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA8,largeurPuiss2,hauteurPuiss2,0,GL_RGBA,GL_UNSIGNED_BYTE,textureZ);
glBegin( GL_QUADS );
glEnable(GL_BLEND);
//3coord (x,y,z) du point bas gauche
glTexCoord2f(0.0f,1.0f);
glVertex3f(-halfImage,(0.5-(hauteurPuiss2/(double)maxPuiss2))*2,iZ-halfImage);
//bas droite
glTexCoord2f(1.0f,1.0f);
glVertex3f(((largeurPuiss2/(double)maxPuiss2)-0.5)*2,(0.5-(hauteurPuiss2/(double)maxPuiss2))*2,iZ-halfImage);
//haut droite
glTexCoord2f(1.0f,0.0f);
glVertex3f(((largeurPuiss2/(double)maxPuiss2)-0.5)*2,+halfImage,iZ-halfImage);
//haut gauche
glTexCoord2f(0.0f,0.0f);
glVertex3f(-halfImage,+halfImage,iZ-halfImage);
glEnd();
}
if(indX >= 0)
{
//float iX = indX*sizeImage/256.0;
float iX = indX*sizeImage/maxPuiss2;
//glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,256,256,0,GL_RGB,GL_UNSIGNED_BYTE,textureX);
glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,profondeurPuiss2,hauteurPuiss2,0,GL_RGBA,GL_UNSIGNED_BYTE,textureX);
glBegin( GL_QUADS );
glEnable(GL_BLEND);
//bas droite
glTexCoord2f(0.0f,1.0f);
glVertex3f(iX-halfImage,(0.5-(hauteurPuiss2/(double)maxPuiss2))*2,-halfImage);
//bas gauche
glTexCoord2f(1.0f,1.0f);
glVertex3f(iX-halfImage,(0.5-(hauteurPuiss2/(double)maxPuiss2))*2,((profondeurPuiss2/(double)maxPuiss2)-0.5)*2);
//haut gauche
glTexCoord2f(1.0f,0.0f);
glVertex3f(iX-halfImage,+halfImage,((profondeurPuiss2/(double)maxPuiss2)-0.5)*2);
//haut droit
glTexCoord2f(0.0f,0.0f);
glVertex3f(iX-halfImage,+halfImage,-halfImage);
glEnd();
}
if(indY >= 0)
{
//float iY = indY*sizeImage/256;
float iY = indY*sizeImage/maxPuiss2;
//glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,256,256,0,GL_RGB,GL_UNSIGNED_BYTE,textureY);
glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,largeurPuiss2,profondeurPuiss2,0,GL_RGBA,GL_UNSIGNED_BYTE,textureY);
glBegin( GL_QUADS );
glEnable(GL_BLEND);
//bas gauche
glTexCoord2f(0.0f,0.0f);
glVertex3f(-halfImage,halfImage-iY,-halfImage);
//bas droite
glTexCoord2f(1.0f,0.0f);
glVertex3f(((largeurPuiss2/(double)maxPuiss2)-0.5)*2,halfImage-iY,-halfImage);
//haut droite
glTexCoord2f(1.0f,1.0f);
glVertex3f(((largeurPuiss2/(double)maxPuiss2)-0.5)*2,halfImage-iY,((profondeurPuiss2/(double)maxPuiss2)-0.5)*2);
//haut gauche
glTexCoord2f(0.0f,1.0f);
glVertex3f(-halfImage,halfImage-iY,((profondeurPuiss2/(double)maxPuiss2)-0.5)*2);
glEnd();
}
//glEnable(GL_LIGHT0);
glDisable(GL_TEXTURE_2D);
glEnable(GL_LIGHTING);
glFlush();
SwapOpenGLBuffers(); |
Partager