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
|
void GL_Window::drawPixels(Traitement *don)
{
SetCurrent(); // On définit le Canvas comme le Canvas current
glMatrixMode(GL_MODELVIEW);
// Point de vue
gluLookAt(0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0);
// Initialisation, couleur de fond ...
glClearColor(0.0, 0.0, 0.0, 0.0); // On efface la couleur actuelle
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //Efface le frame buffer et le Z-buffer
glRotatef(180.0f, 180.0f, 0.0f, 0.0f); // On effectue un flip horizontal du repère
glEnable(GL_DEPTH_TEST); // On active les options de profondeurs
glDepthFunc(GL_LESS); // pour les pixels
glPixelStorei(GL_UNPACK_ALIGNMENT, 1); // On modifie le mode de stockage des pixels
// On build une texture2D
GLuint m_Textures_num = -1;
glGenTextures(1,&m_Textures_num);
glBindTexture(GL_TEXTURE_2D,m_Textures_num);
//gluBuild2DMipmaps(GL_TEXTURE_2D, 3, 128, 128, GL_RGB, GL_UNSIGNED_BYTE, RGBA);
glTexImage2D(GL_TEXTURE_2D,0, GL_RGB, 128, 128, 0, GL_RGB, GL_UNSIGNED_BYTE, RGBA);
//delete image;
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
// glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_BLEND);
glEnable(GL_TEXTURE_2D); // Activation des Textures2D
// glShadeModel(GL_SMOOTH); // Mode d'application
// On dessine le carré et on lui plaque la texture
GLfloat minX=-1.0,maxX=1.0f;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_COLOR_MATERIAL);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f);
glVertex2f(minX, minX); //glVertex3f(-0.20, -0.1, 0.0);
glTexCoord2f(0.0f, 1.0f);
glVertex2f(minX, maxX); //glVertex3f(-0.2, 0.1, 0.0);
glTexCoord2f(1.0f, 1.0f);
glVertex2f(maxX, maxX); //glVertex3f(0.0, 0.2, 0.0);
glTexCoord2f(1.0f, 0.0f);
glVertex2f(maxX, minX); //glVertex3f(0.0, -0.1, 0.0);
glEnd();
SwapBuffers(); // On affiche le buffer
// Libération des textures
cout << "Libération de la texture " << numero <<endl;
glDeleteTextures(1,&m_Textures_num);
} |
Partager