IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

Convertion SDL_surface TTF en image OpenGL


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 213
    Par défaut Convertion SDL_surface TTF en image OpenGL
    Bonjour,
    Donc voila, j'essai de convertir un code que j'utiliais en SDL pure pour afficher du text avec SDL_ttf, en un code openGL toujour avec SDL_ttf.
    Le problème que je rencontre c'est pour le "glTexImage2D", le prog plante car je ne met probablement pas les bons paramètres dans la fonction, ne connaissant pas le format renvoyé par "TTF_RenderText_Solid".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    void Ctext::DrawText(char message[])
    {
     
    //Création de la texture du sprite
        SDL_Surface *temp;
     
        glGenTextures (1, & surface);
        glBindTexture (GL_TEXTURE_2D, surface);
     
        // Paramétrage de la texture.
        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);
        glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
     
        temp = TTF_RenderText_Solid(font, message, color);
     
        // Jonction entre OpenGL et SDL.
        glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, temp->w, temp->h, 0,
        GL_RGBA, GL_UNSIGNED_BYTE, temp -> pixels);
     
        SDL_FreeSurface(temp);
     
    //      (ancien code en SDL pure)
    //	surface=TTF_RenderText_Solid(font, message, color);
    //	SDL_BlitSurface(surface, &rectsrc, Screen, &rectdest);
     
    }

  2. #2
    Membre éprouvé Avatar de razmott
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 133
    Par défaut
    Salut !
    Ton problème provient de l'utilisation de glGenTextures :
    il ne faut pas passer en paramètre un SDL_Surface. Cette fonction requière en effet, un pointeur sur entier non-signé. Tu doit ensuite copier manuellement pixel par pixel, le contenue du SDL_Surface.

    Bon coding !
    @+

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 213
    Par défaut
    Je ne comprend pas trop le problème avec le glgentexure, je l'utilise pour charger des images avec sdl et ensuite les convertir en opengl avec le meme code et sa fonctionne. Peux-tu être plus explicite STP?

  4. #4
    Membre éprouvé Avatar de razmott
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 133
    Par défaut
    Oups !

    J'avais mal lu ton code .
    Par contre je croit que SDL_TTF renvoit une surface en RGB et non en RGBA.
    Ainsi essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, temp->w, temp->h, 0,
        GL_RGB, GL_UNSIGNED_BYTE, temp -> pixels);
    Bon courage !

    @+

  5. #5
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par razmott
    Oups !

    J'avais mal lu ton code .
    Par contre je croit que SDL_TTF renvoit une surface en RGB et non en RGBA.
    Cela est faux. Si on utilise les fonctions TTF_RenderText_Blended, alors on obtient une image RGBA. Dans le cas présent par contre, en effet, un RGB suffit

    Jc

  6. #6
    Membre éprouvé Avatar de razmott
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 133
    Par défaut
    Salut !

    Si on utilise les fonctions TTF_RenderText_Blended, alors on obtient une image RGBA
    Ah !
    Bon, j'aurais appris quelque chose.

    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Convertion document HTML en image
    Par enusius dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 25/09/2013, 19h05
  2. Réponses: 1
    Dernier message: 06/06/2010, 10h53
  3. Probleme d'affichage image OpenGL
    Par nonolerobot77 dans le forum GLUT
    Réponses: 2
    Dernier message: 22/02/2008, 11h54
  4. Traitement image OpenGL
    Par LEK dans le forum OpenGL
    Réponses: 2
    Dernier message: 02/11/2006, 08h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo