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
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
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
Y a pas mal de sources en attente, faudrait que je fasse une mise à jour un de ces 4...
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
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:
Et bien sur enlever "glEnable(GL_BLEND)".
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);
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êmeEnvoyé par BruceBoc
Jc
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.Envoyé par BruceBoc
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
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.
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.
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
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>
En tout cas, merci pour cette source.
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 effet, j'ai du mélanger les deux fichiers Codeblocks. J'utilise le makefile en faitEnvoyé par _-Slash-_
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.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 ===
Mais de rien, pour la remontée d'informationsEn tout cas, merci pour cette source.
Jc
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 .Envoyé par _-Slash-_
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èmeEnvoyé par fearyourself
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.
bus error sous osx 10.5
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager