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

Contribuez Discussion :

[Source] [SDL] Textures Textes OpenGL


Sujet :

Contribuez

  1. #1
    Expert éminent sénior

    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 : 43
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut [Source] [SDL] Textures Textes OpenGL
    Voici un programme qui permet de charger et afficher du texte sous OpenGL utilisant SDL_ttf.

    J'ai mis un petit programme qui affiche le texte et utilise la position de la souris pour déplacer le texte...

    Jc
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior

    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 : 43
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Je rajoute à ce fil une troisième source que je trouve importante.

    Premièrement, une version de CTexte (la source du premier post de ce fil) qui n'utilise pas OpenGL mais qui fait les mêmes choses.

    Par contre, j'ai ajouté deux fonctions à la classe, une fonction qui ajoute une lettre et une qui en enlève une.

    Cela permet de faire une saisie au clavier par exemple

    Utilisant l'unicode, ce code semble fonctionner sur un clavier Qwerty, Azerty sous Windows et sous linux

    [EDIT] à Frank.h d'avoir testé sous linux avec un clavier Azerty [/EDIT]

    Jc

    Remarque : pour utiliser cette source, vous devez chercher un fichier ttf de votre choix. J'ai voulu gardé ma source libre et sans remerciements

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Y a pas mal de sources en attente, faudrait que je fasse une mise à jour un de ces 4...

  4. #4
    Membre régulier

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

    Informations forums :
    Inscription : Août 2006
    Messages : 213
    Points : 103
    Points
    103
    Par défaut
    On peut également rendre le fond du text transparent sans activer le alpha blending.

    Pour cela il faut rajouter dans le fichier Ctexte.cpp du dossier texture la partie en rouge:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SDL_BlitSurface(temp, NULL, temp2, NULL);
    
    
    SDL_SetColorKey(temp2, SDL_SRCCOLORKEY, SDL_MapRGB(temp2->format, 0, 0, 0));
    SDL_Surface *temp3 = SDL_DisplayFormatAlpha(temp2);
    
    
    // Jonction entre OpenGL et SDL.
    glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, temp3->w, temp3->h, 0,
                                GL_RGBA, GL_UNSIGNED_BYTE, temp3->pixels);
    
    SDL_FreeSurface(temp3);
    Et bien sur enlever "glEnable(GL_BLEND)".

    J'ai opté pour cette solution, car le alpha-blending rendait également le corps de text semi-transparent, effet que je ne voulais pas.

  5. #5
    Expert éminent sénior

    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 : 43
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par BruceBoc
    On peut également rendre le fond du text transparent sans activer le alpha blending.

    Pour cela il faut rajouter dans le fichier Ctexte.cpp du dossier texture la partie en rouge:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SDL_BlitSurface(temp, NULL, temp2, NULL);
    
    
    SDL_SetColorKey(temp2, SDL_SRCCOLORKEY, SDL_MapRGB(temp2->format, 0, 0, 0));
    SDL_Surface *temp3 = SDL_DisplayFormatAlpha(temp2);
    
    
    // Jonction entre OpenGL et SDL.
    glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, temp3->w, temp3->h, 0,
                                GL_RGBA, GL_UNSIGNED_BYTE, temp3->pixels);
    
    SDL_FreeSurface(temp3);
    Et bien sur enlever "glEnable(GL_BLEND)".

    J'ai opté pour cette solution, car le alpha-blending rendait également le corps de text semi-transparent, effet que je ne voulais pas.
    Tu peux me faire une version compléte avec tes changements, je suis trop fatigué pour le faire moi-même

    Jc

  6. #6
    Membre régulier

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

    Informations forums :
    Inscription : Août 2006
    Messages : 213
    Points : 103
    Points
    103
    Par défaut
    Voici donc les 2 versions sans utilisation du Blending :
    Fichiers attachés Fichiers attachés

  7. #7
    Expert éminent sénior

    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 : 43
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par BruceBoc
    Voici donc les 2 versions sans utilisation du Blending :
    En effet, je cherchais comment faire hier soir mais j'utilisais encore la version Blending de TTF.

    A savoir que si on utilise la version Shaded, le texte sera vraiment plus joli, je vais faire cela et du coup on aura un rendu plus sympa...

    Jc

  8. #8
    Membre régulier

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

    Informations forums :
    Inscription : Août 2006
    Messages : 213
    Points : 103
    Points
    103
    Par défaut
    Je sais pas si me sert correctement de Shaded, mais quand je teste, le rendu est vraiment dégueux, on voit des pixels noirs sur le bord du text.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Je viens reporter plusieurs problème pour "gestionunicodec"

    Tout d'abord j'ai modifié un peu le fichier projet :
    rajout de la lib GFX, suppresion de Glu, puis correction de CPP vers C.

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    <CodeBlocks_project_file>
    	<FileVersion major="1" minor="6" />
    	<Project>
    		<Option title="SDL Application" />
    		<Option pch_mode="0" />
    		<Option compiler="gcc" />
    		<Build>
    			<Target title="default">
    				<Option output="SDLapp.exe" prefix_auto="0" extension_auto="0" />
    				<Option type="0" />
    				<Option compiler="gcc" />
    				<Option projectResourceIncludeDirsRelation="1" />
    			</Target>
    		</Build>
    		<VirtualTargets>
    			<Add alias="All" targets="default;" />
    		</VirtualTargets>
    		<Linker>
    			<Add library="mingw32" />
    			<Add library="SDLmain" />
    			<Add library="SDL" />
    			<Add library="SDL_ttf" />
    			<Add library="SDL_gfx" />
    		</Linker>
    		<Unit filename="CTexte.c">
    			<Option compilerVar="CC" />
    		</Unit>
    		<Unit filename="CTexte.h" />
    		<Unit filename="Main.c">
    			<Option compilerVar="CC" />
    		</Unit>
    		<Unit filename="Main.h" />
    		<Extensions>
    			<code_completion />
    			<envvars />
    		</Extensions>
    	</Project>
    </CodeBlocks_project_file>
    Ensuite voilà les warnings que j'ai lors de la compilation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    C:\Documents and Settings\Bart\Bureau\gestionunicodec\CTexte.h:46: warning: function declaration isn't a prototype
    C:\Documents and Settings\Bart\Bureau\gestionunicodec\Main.c:: In function `SDL_main':
    C:\Documents and Settings\Bart\Bureau\gestionunicodec\Main.c:84: warning: passing arg 2 of `Texte_ChargerPolice' discards qualifiers from pointer target type
    C:\Documents and Settings\Bart\Bureau\gestionunicodec\Main.c:89: warning: passing arg 3 of `Texte_AffTexte_PositionTexte' discards qualifiers from pointer target type
    C:\Documents and Settings\Bart\Bureau\gestionunicodec\CTexte.h:46: warning: function declaration isn't a prototype
    C:\Documents and Settings\Bart\Bureau\gestionunicodec\CTexte.c:36: warning: function declaration isn't a prototype
    C:\Documents and Settings\Bart\Bureau\gestionunicodec\CTexte.c:40: warning: function declaration isn't a prototype
    :: === Build finished: 0 errors, 6 warnings ===
    En tout cas, merci pour cette source.

  10. #10
    Expert éminent sénior

    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 : 43
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par _-Slash-_
    Bonsoir,

    Je viens reporter plusieurs problème pour "gestionunicodec"

    Tout d'abord j'ai modifié un peu le fichier projet :
    rajout de la lib GFX, suppresion de Glu, puis correction de CPP vers C.
    En effet, j'ai du mélanger les deux fichiers Codeblocks. J'utilise le makefile en fait


    Ensuite voilà les warnings que j'ai lors de la compilation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    C:\Documents and Settings\Bart\Bureau\gestionunicodec\CTexte.h:46: warning: function declaration isn't a prototype
    C:\Documents and Settings\Bart\Bureau\gestionunicodec\Main.c:: In function `SDL_main':
    C:\Documents and Settings\Bart\Bureau\gestionunicodec\Main.c:84: warning: passing arg 2 of `Texte_ChargerPolice' discards qualifiers from pointer target type
    C:\Documents and Settings\Bart\Bureau\gestionunicodec\Main.c:89: warning: passing arg 3 of `Texte_AffTexte_PositionTexte' discards qualifiers from pointer target type
    C:\Documents and Settings\Bart\Bureau\gestionunicodec\CTexte.h:46: warning: function declaration isn't a prototype
    C:\Documents and Settings\Bart\Bureau\gestionunicodec\CTexte.c:36: warning: function declaration isn't a prototype
    C:\Documents and Settings\Bart\Bureau\gestionunicodec\CTexte.c:40: warning: function declaration isn't a prototype
    :: === Build finished: 0 errors, 6 warnings ===
    J'ai corrigé leur "function declaration isn't a prototype" mais je laisse celui sur le pointer target type. Le warning provient du fait que je ne déclare pas le paramètre comme étant une constante car il ne le sera pas forcément.

    En tout cas, merci pour cette source.
    Mais de rien, pour la remontée d'informations

    Jc

  11. #11
    Invité
    Invité(e)
    Par défaut
    Y'a pas de quoi

    Surtout que j'essaye de m'en servir pour un petit projet, mais là j'ai un problème de scintillement dans mon projet alors que sur la source non...

  12. #12
    Expert éminent sénior

    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 : 43
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par _-Slash-_
    Y'a pas de quoi

    Surtout que j'essaye de m'en servir pour un petit projet, mais là j'ai un problème de scintillement dans mon projet alors que sur la source non...
    Faudrait créer un post avec un exemple minimal .

    Cela peut venir d'une mauvaise utilisation du double buffering par exemple.

    Jc

  13. #13
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par fearyourself
    Faudrait créer un post avec un exemple minimal .

    Cela peut venir d'une mauvaise utilisation du double buffering par exemple.

    Jc
    Pour l'instant je n'ai pas encore trop vérifié le bug, faute de temps, mais si je n'y arrive pas (et je pense également à un SDL_Flip qui traine dans un copie/colle ou autre) je posterai sans problème

    Edit : En effet, deux fonctions avec leur Flip, ça fait flipper problème résolu. Sinon, comment as tu enlevé les warnings ? Il n'y a pas les modifs on dirait, merci
    Dernière modification par Invité ; 10/07/2007 à 22h08.

  14. #14
    En attente de confirmation mail
    Inscrit en
    Octobre 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 127
    Points : 112
    Points
    112
    Par défaut
    bus error sous osx 10.5

Discussions similaires

  1. Réponses: 10
    Dernier message: 08/06/2009, 11h30
  2. Réponses: 1
    Dernier message: 11/03/2009, 18h22
  3. [SOURCE][SDL][OPENGL]Singleton pour gérer le fenêtrage
    Par shenron666 dans le forum Contribuez
    Réponses: 26
    Dernier message: 24/08/2006, 11h01
  4. texture sous opengl : objets complexes
    Par pouleriguen dans le forum OpenGL
    Réponses: 1
    Dernier message: 20/11/2004, 19h47
  5. BP avec Textures en OpenGL
    Par skyghis dans le forum OpenGL
    Réponses: 11
    Dernier message: 27/11/2003, 17h15

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