Bonjour à tous.
voici mon problème : j'aimerais utiliser opengl pour faire de la 2d. Ayant précédemment utilisé la sdl, j'ai commencé par coder une fonction y ressemblant d'assez près.
void blitIMG(GLuint image, rect Cache, rect posBlit);
rect est une structures comprenant les variables X, Y, W, H.
Mon problème se trouve dans le fait que glTexCoord utilise des valeurs entre 0 et 1. Dès lors voici l'implémentation de ma fonction :
void blitIMG(GLuint image, rect Cache, rect posBlit)
{
glMatrixMode( GL_PROJECTION );
glLoadIdentity( );
gluOrtho2D(0,largeur,hauteur,0);
glPushMatrix();
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, image);
glBegin(GL_QUADS);
glTexCoord2d(Cache.X/posBlit.W, Cache.Y/posBlit.H);
glVertex2d(posBlit.X, posBlit.Y);
glTexCoord2d(Cache.X/posBlit.W, (Cache.Y+Cache.H)/posBlit.H);
glVertex2d(posBlit.X, posBlit.Y+posBlit.H);
glTexCoord2d((Cache.X+Cache.W)/posBlit.W, (Cache.Y+Cache.H)/posBlit.H);
glVertex2d(posBlit.X+posBlit.W, posBlit.Y+posBlit.H);
glTexCoord2d((Cache.X+Cache.W)/posBlit.W, Cache.Y/posBlit.H);
glVertex2d(posBlit.X+posBlit.W, posBlit.Y);
glEnd();
glPopMatrix();
return;
}
Malheureusement cela ne marche pas et comme vous pouvez le voir c'est assez compliqué. Je n'arrive pas à trouver où je me suis trompé.
Si vous voyez l'erreur parlez m'en cela résoudrais mon problème.
Cependant je doute que vous ayez envie de vous plonger dans ce code donc j'aimerais aussi savoir si il n'éxiste pas de fonction opengl permettant de changer l'intervalle [0 ; 1] en [0 ; LARGEUR]par exemple.
Merci beaucoup d'avoir pris le temps de lire mon post et peut-être même que vous allez prendre le temps de répondre
