Je suis un débutant dans OpenGL et j'ai créé une fonction pour écrire du texte dans OpenGL en utilisant SDL_TTF. Voici le code de ma fonction:Texte en OpenGL en utilisant SDL_TTF
#define WINDOW_WIDTH 832
#define WINDOW_HEIGHT 487
#define glVertex2px(x,y) glVertex2d((double)(x) * 2.0/(double)WINDOW_WIDTH - 1.0, 1.0 - (double)(y) * 2.0/(double)WINDOW_HEIGHT);
void glWriteText2d(TTF_Font *font,const char *text,SDL_Color color,const int x,const int y){
GLuint texture;
SDL_Surface *surface;
surface = TTF_RenderText_Blended(font,text,color);
glGenTextures(1,&texture);
glBindTexture(GL_TEXTURE_2D,texture);
gluBuild2DMipmaps(GL_TEXTURE_2D,4,surface->w,surface->h,GL_RGBA,GL_UNSIGNED_BYTE,surface->pixels);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
GLboolean textureIsEnabled = glIsEnabled(GL_TEXTURE_2D);
glEnable(GL_TEXTURE_2D);
glColor3ub(255,255,255);
glBegin(GL_QUADS);
glTexCoord2f(0,0);
glVertex2px(x,y);
glTexCoord2f(0,1);
glVertex2px(x,y + surface->h);
glTexCoord2f(1,1);
glVertex2px(x + surface->w,y + surface->h);
glTexCoord2f(1,0);
glVertex2px(x + surface->w,y);
glEnd();
if(!textureIsEnabled){
glDisable(GL_TEXTURE_2D);
}
}
Cette fonction ne fonctionne pas parce que quand je l'utilise, il dessine un rectangle qui est la couleur de color
à l'endroit où le texte devrait être. Que dois-je changer dans mon code pour que cela fonctionne?
Désolé, mais je pense que vous devriez d'abord en apprendre davantage sur OpenGL avant d'essayer de faire ce qui tente actuellement. Tout d'abord, OpenGL n'a pas de fonctions textuelles, pas d'OpenGL moderne. De plus, vous ne devriez pas utiliser cet ancien OpenGL 1.1 avec son pipeline de fonctions fixes. C'est définitivement complètement obsolète. Et je n'ai jamais vu glVertex2px auparavant. Aussi, je ne peux pas trouver quelque chose à ce sujet. Donc, finalement, il est difficile de dire ce qui ne va pas dans ce contexte sans plus d'informations. Peut-être que vous avez mal configuré la matrice ModelView/Projection pour que vous ne puissiez voir qu'une petite partie de l'ensemble? – Michael
@Michael A propos de 'glVertex2px', c'est une macro que j'ai créée moi-même et qui dessine des choses en utilisant le nombre de pixels du coin supérieur gauche de la fenêtre comme dans SDL. En 2D, je trouve cela plus pratique. J'ai oublié d'inclure sa définition dans le code, mais j'ai édité pour corriger cela. –