CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

SDL_ttf

Perdu_de_linfo
Perdu_de_linfo
Niveau 9
22 février 2005 à 19:30:22

Salut à tous.

J´ai téléchargé la librairie SDL_ttf il y a qq instants, et j´essaie de la faire marcher en ce moment:p
Malheureusement, j´ai pas mal de problèmes à partir dun tuto que jai trouvé sur prografix.
Voila le code qu´ils donnent:
void vTexte(char *message, short x, short y,
char *font_face, short font_size,
Uint32 iColor, bool shaded, Uint32 iColorShaded)
{
/ / Les objets SDL_Color utilisés pour la couleur du texte
SDL_Color color;
SDL_Color colorShaded;

/ / On récupère les valeurs RGB de iColor
color.r=(iColor & SDL_MapRGB(Screen->format,255,0,0)) > > 16;
color.g=(iColor & SDL_MapRGB(Screen->format,0,255,0)) > > 8;
color.b=(iColor & SDL_MapRGB(Screen->format,0,0,255));

if ( shaded)
{
/ / Idem pour la couleur du fondu
colorShaded.r=(iColorShaded & SDL_MapRGB(Screen->format,255,0,0)) > > 16;
colorShaded.g=(iColorShaded & SDL_MapRGB(Screen->format,0,255,0)) > > 8;
colorShaded.b=(iColorShaded & SDL_MapRGB(Screen->format,0,0,255));
}

/ / Chargement de la police dans le fichier True Type ( avec la taille voulue)
font=TTF_OpenFont(font_face, font_size);

if ( !font)
fprintf(stderr, " Impossible de charger la taille %dpt depuis %s: %s\n",
font_size, font_face, SDL_GetError());

if ( !shaded)
text = TTF_RenderText_Solid(font, message, color);
/ / Rendu du texte normal
else if ( shaded)
text = TTF_RenderText_Shaded(font, message, color, colorShaded);
/ / Rendu du texte avec fondu vers la couleur iColorShaded

/ * Maintenant la surface ´text´ contient le texte */
if ( text == NULL)
{
/ / Si la surface est vide, on envoie un msg d´erreur
fprintf(stderr, " Impossible de rendre le texte : %s\n", SDL_GetError());
}
else if ( text!=NULL)
{
Rectangle_Destination.x = x;
Rectangle_Destination.y = y;
Rectangle_Destination.w = text->w;
Rectangle_Destination.h = text->h;

/ / On blitte la surface aux coordonnées définies par le rectangle
if ( SDL_BlitSurface(text, NULL, Screen, &_Destination) < 0 )
{
fprintf(stderr, " Impossible de blitter le texte : %s\n", SDL_GetError());
}
SDL_FreeSurface(text); / / Après quoi on libère la surface
}
TTF_CloseFont(font); / / Fermeture de la police
}

En effet, j´ai partout des undefined functions.
Et je sais pas quoi mettre. Par exemple la variable font : font=TTF_OpenFont(font_face, font_size);
Je sais pas quel type je dois lui donner!!??
J´ai essayé plusieurs trucs mais je suis arrivé a rien...
Si vous pouvez me filer un coup de main :)

ladresse du tuto: http://prografix.games-creators.org/document/166

thesuperbest
thesuperbest
Niveau 8
22 février 2005 à 19:37:54

Je ne connais que ce tuto sur SDL_ttf et j´ai jamais réussi à le compiler :s

Vengeur41
Vengeur41
Niveau 10
22 février 2005 à 20:00:37

SDL_TTF est très chiante pour un débutant...
Moi aussi j´avais eu bcp de mal à l´utiliser la première fois.

Je te propose ma version de la fonction vTexte :
/ * Fonction */
void vTexte(char *message, short x, short y, char *font_face, short font_size, Uint8 r, Uint8 g, Uint8 b)
{
SDL_Color color;
SDL_Color colorShaded;
SDL_Surface *text;
SDL_Rect Rectangle_Destination;

color.r=r;
color.g=g;
color.b=b;

font=TTF_OpenFont(font_face, font_size);
if ( !font)
{
fprintf(stderr, " Erreur : impossible de charger la police de caractères font.ttf ( Arial) \n");
exit(2);
}
text = TTF_RenderText_Solid(font, message, color);
if ( !text)
SDL_Quit();

Rectangle_Destination.x = x;
Rectangle_Destination.y = y;
Rectangle_Destination.w = text->w;
Rectangle_Destination.h = text->h;

SDL_BlitSurface(text, NULL, Screen, &_Destination);

SDL_FreeSurface(text);
TTF_CloseFont(font);
}

Tout ce que tu as à faire c´est définir une variable font ainsi :
TTF_Font *font;

et d´initialiser la SDL_TTF :
TTF_Init()

Attention à l´initialiser après SDL !

Perdu_de_linfo
Perdu_de_linfo
Niveau 9
22 février 2005 à 21:12:11

Mais, il me met toujours undeclared function a propos de la variable font. :(

Vengeur41
Vengeur41
Niveau 10
22 février 2005 à 21:14:03
  1. include < SDL/SDL_TTF.h>

Mets sdl et ttf dans le meme repertoire

Perdu_de_linfo
Perdu_de_linfo
Niveau 9
22 février 2005 à 21:16:26

Oups, non pas pour font mais jai:

D:\C++\myfirstgame.cpp In function `void vTexte(char*, short int, short int, char*, short int, unsigned char, unsigned char, unsigned char)´:

45 D:\C++\myfirstgame.cpp syntax error before `color´

( cest juste avant que jai mis le TTF_init mais je sais pas ou le placer?)

50 D:\C++\myfirstgame.cpp `color´ undeclared ( first use this function)

70 D:\C++\myfirstgame.cpp `Screen´ undeclared ( first use this function)

Voila... toutes ces variables, je sais pas en quoi les définirs!?
merci :)

Perdu_de_linfo
Perdu_de_linfo
Niveau 9
22 février 2005 à 21:16:58

Oui ils sont déja dans le même répertoire...

Vengeur41
Vengeur41
Niveau 10
22 février 2005 à 21:24:10

Programme exemple ( tu testera comme ca) :

  1. include < SDL/SDL.h>
  2. include < SDL/SDL_TTF.h>

SDL_Surface *Screen;
TTF_Font *font;
/ * Fonction */
void vTexte(char *message, short x, short y, char *font_face, short font_size, Uint8 r, Uint8 g, Uint8 b)
{
SDL_Color color;
SDL_Color colorShaded;
SDL_Surface *text;
SDL_Rect Rectangle_Destination;

color.r=r;
color.g=g;
color.b=b;

font=TTF_OpenFont(font_face, font_size);
if ( !font)
{
fprintf(stderr, " Erreur : impossible de charger la police de caractères font.ttf ( Arial) \n");
exit(2);
}
text = TTF_RenderText_Solid(font, message, color);
if ( !text)
SDL_Quit();

Rectangle_Destination.x = x;
Rectangle_Destination.y = y;
Rectangle_Destination.w = text->w;
Rectangle_Destination.h = text->h;

SDL_BlitSurface(text, NULL, Screen, &_Destination);

SDL_FreeSurface(text);
TTF_CloseFont(font);
}

int main ( int argc, char *argv[])
{
SDL_Init(SDL_INIT_VIDEO);
TTF_Init();
Screen = SDL_SetVideoMode(320,240,16,SDL_HWSURFACE);
SDL_WM_SetCaption("TILETEST",NULL);
vTexte("J´aime la tarte aux fraises",0,0,"font.ttf",12,255,255,255);
SDL_Flip(Screen);
SDL_Delay(5000);
SDL_Quit();
return 0;
}

Perdu_de_linfo
Perdu_de_linfo
Niveau 9
22 février 2005 à 21:32:01

Merci beaucoup, je n´ai plus d´erreurs :)
Mais rien ne s´affiche lol, mais je vais tenter de me débrouiller avant de redemander :p)
Juste une question.
J´appel ma fonction ainsi:

vTexte("salut",600,400,"./arial.ttf",16,0,true,0);

Jai mis salut juste comme ca, mais jaimerais bien mettre une variable qui contient des chiffres.
Je fais comment?
Merci :)

Vengeur41
Vengeur41
Niveau 10
22 février 2005 à 21:37:30

Ca n´affiche rien > tu as bien un font.ttf dans le répertoire de ton projet ?
Si c´est pour afficher Score : < tonscore> par exemple, tu fais

  1. include < stdlib.h>

. ..
int score=500; / * par exemple*/
char strscore[16];
/ * Ecrit la valeur du score dans strscore */
sprintf(strscore,"Score : %d",score);
/ * Affiche le tout à l´ecran avec ma version de vTexte ( tu verra que celle du tuto bug sur certains OS)*/
vTexte(strscore,0,0,"font.ttf",255,255,255);

Voila ; )

Perdu_de_linfo
Perdu_de_linfo
Niveau 9
22 février 2005 à 21:41:51

You are a nice guy :-)
Je testerai demain après midi et je te redis si j´ai des problèmes!
Encore merci et bonne soirée!

JeanYvesYves
JeanYvesYves
Niveau 10
22 février 2005 à 23:29:00

Un petit lien vers un prog que j´ai fait pour convertir les TTF en BMP en utilisant SDL_ttf :)

https://www.jeuxvideo.com/forums/1-31-8352573-1-0-1-0-0.htm

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment