Mappage d´une texture sur un quadrilatère
Ce programme affiche une texture mappée sur une face. Le programme se lance ainsi: demo6 image.bmp où "image.bmp" est un fichier image au format BMP (RGB 24 bits) dans le même répertoire que le programme.
Programme : demoGLUT/demo6.cpp
Sources :demoGLUT/glut-demos-src.zip
Exécutables pour Windows :demoGLUT/glut-demos-win32exe.zip
Fichiers bitmap pour les textures :demoGLUT/glut-demos-bmp.zip
#include "demo.h" #include "bitmap.h" /********************************************************************* * AUTOGENERATED CODE *********************************************************************/ #include "texture.hpp" /********************************************************************* * GUI DESIGN *********************************************************************/ void onReshape(int width,int height){ float r=(float) width/height; glViewport(0,0,width,height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(70,(float) width/height,0.1,10); } SCENE(Scene,textureDisplay,onReshape); CONTROL(Control,textureLines); SPLIT(Split,1,0.6,&Control,&Scene); /********************************************************************* * TEXTURE GENERATION *********************************************************************/ unsigned int Texture; void loadTextures(char* filename){ bitmap<unsigned char> b; try { b.loadFile(filename); } catch(...){ std::cout << "Could not open bitmap file " << filename << std::endl; throw; } glGenTextures(1,&Texture); glBindTexture(GL_TEXTURE_2D,Texture); glPixelStorei(GL_UNPACK_ALIGNMENT,1); gluBuild2DMipmaps(GL_TEXTURE_2D,GL_RGB,b.getWidth(),b.getHeight(),GL_RGB,GL_UNSIGNED_BYTE,b.getData()); glEnable(GL_TEXTURE_2D); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); } /********************************************************************* * MAIN PROGRAM *********************************************************************/ int main(int argc,char *argv[]){ int a=800,b=600,x,y; if (argc==1){ std::cout << "usage : " << argv[0] << " image.bmp" << std::endl; return -1; } glutInit(&argc,argv); x=glutGet(GLUT_SCREEN_WIDTH); y=glutGet(GLUT_SCREEN_HEIGHT); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); glutInitWindowPosition((x-a)/2,(y-b)/2); glutInitWindowSize(a,b); createWindow(&Split,"OpenGL demo"); loadTextures(argv[1]); glutMainLoop(); return 0; }

Pour information:
Le code original qui a été traduit par le programme convert:

glClear(GL_COLOR_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(#f-5:0:5#,#f-5:0:5#,#f-5:5:5#,0,0,0,0,1,0); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,#eGL_CLAMP:GL_REPEAT#); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,#eGL_CLAMP:GL_REPEAT#); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,#eGL_NEAREST:GL_LINEAR:GL_NEAREST_MIPMAP_NEAREST:GL_LINEAR_MIPMAP_NEAREST:GL_NEAREST_MIPMAP_LINEAR:GL_LINEAR_MIPMAP_LINEAR#); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,#eGL_NEAREST:GL_LINEAR#); glBegin(GL_TRIANGLE_STRIP); glTexCoord2f(#f-10:0:10#,#f-10:0:10#); glVertex2f(#f-1:-1:1#,#f-1:-1:1#); glTexCoord2f(#f-10:1:10#,#f-10:0:10#); glVertex2f(#f-1:1:1#,#f-1:-1:1#); glTexCoord2f(#f-10:0:10#,#f-10:1:10#); glVertex2f(#f-1:-1:1#,#f-1:1:1#); glTexCoord2f(#f-10:1:10#,#f-10:1:10#); glVertex2f(#f-1:1:1#,#f-1:1:1#); glEnd(); glFlush(); glutSwapBuffers();
Dernière modification le 18/3/2010
Ce document a été traduit de LaTeX par HeVeA