Impossible d'afficher du texte avec SDL_TTF

tistou19

Membre confirmé
22 Février 2010
33
0
Devant un Mac... =D
Bien le bonjour,

A croire que nous empêche de développer sous mac :D, je rencontre un enième problème et cette fois avec la SDL_TTF. En effet, il m'est impossible d'afficher du texte. Pourtant XCode ne me signale aucune erreur à la compilation et j'ai bien pris le soin de mettre la police utilisé par le programme dans le dossier Debug et Release en fonction du lieu de compilation...
:siffle: Dans le cas où quelqu'un est une idée :D merci de me le faire savoir...:up: Merci
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

#include "SDL.h"
#include "SDL_image.h"
#include "SDL_ttf.h"

int main(int argc, char *argv[])
{
int continuer=1;
SDL_Surface *ecran=NULL,*zozor=NULL;
SDL_Surface *texte=NULL;
SDL_Rect zozorPos;
SDL_Color couleurBlanc={0,0,0};
zozorPos.x=200;
zozorPos.y=350;
SDL_Event event;
TTF_Font *police = NULL;
SDL_Init(SDL_INIT_VIDEO);
TTF_Init();

ecran=SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE);
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
zozor=SDL_LoadBMP("zozor.bmp");
SDL_SetColorKey(zozor, SDL_SRCCOLORKEY, SDL_MapRGB(zozor->format, 0, 0, 255));
SDL_SetAlpha(zozor, SDL_SRCALPHA, 170);
SDL_BlitSurface(zozor,NULL,ecran,&zozorPos);
police=TTF_OpenFont("/Library/Fonts/Arial.ttf", 12);
texte=TTF_RenderText_Solid(police, "Salut du con", couleurBlanc);
SDL_Flip(ecran);
while (continuer) {
SDL_WaitEvent(&event);
switch (event.type) {
case SDL_KEYUP:
continuer=0;
break;
}
}

SDL_FreeSurface(zozor);
TTF_CloseFont(police);
TTF_Quit();
SDL_Quit();
return EXIT_SUCCESS;
}
Ceci est le code, c'est cour parce que c'est pour voir comment est censé fonctionner DSL_TTF.

---------- Nouveau message ajouté à 21h58 ---------- Le message précédent a été envoyé à 21h56 ----------

D'ailleurs, j'ai aussi et surtout utilisé cette ligne plutôt que celle posté précédemment :

police=TTF_OpenFont("Arial.ttf", 12);
 
tu devrais jeter un coup d'oeil dans le gdb avec Xcode pour voir si il n'y a pas un pb d'init/alloc

par exemple comme Nyx0uf en testant
if (!police) après OpenFont
et meme
if (SDL_Init(SDL_INIT_VIDEO)==-1) pour voir si il n'y a pas d'erreur d'init

de plus loin d'être un expert il me semble que tu dois après le rendering updater la surface; càd SDL_BlitSurface(texte, ....)

parce que là je vois pas comment cela pourrait afficher le texte

vois tu au moins qq chose à affichage ?
 
NyxOuf

Je viens de tester ton projet mais je comprends plus rien, je sais pas si il marche chez toi mais en tout cas chez moi, XCode, me dit "EXC_BAD_ACESS"...^^

Fingah

Explique qu'est-ce que le gdb en une ligne et qu'est-ce que je dois faire...

Merci
 
comme dit Nyx0uf tu dois mettre des "garde-fous" dans ton code donc tester chaque etape (avec des if pour police, texte, SDL_Init...) et afficher un texte explicite pour savoir ou ca plante ... enfin du debug classique quoi

si tu n'es pas au point sur le sujet commence par t'informer la dessus ... parce que la on est leger niveau details sur ton probleme
 
je ne connais pas particulierement le site du zero (juste de nom en fait) mais oui je suis d'accord cela devrait faire partir des fondamentaux quand on commence la prog (surtout en C)
 
Je récapitule. Mon code ne beug pas. Je n'ai aucune erreur de compilation dans mon code, et au lancement il n'y aucun problème. Sauf que mon texte ne s'affiche pas...

Pour l'erreur, c'est une erreur dans le code du projet que NyxOuf m'a donné...

Je sais que tout cela vous parait sûrement très bizarre, mais je suis en IUT informatique, et je ne comprends vraiment pas d'où cela vient. J'ai d'ailleurs trouvé un forum en anglais qui relatait le même problème, mais sans réponse...

Et pour le DBG...debugger, je l'ai fait mais puisque ce n'est pas un problème de mon code... Je pense que mon erreur vient de ma machine...
 
Je récapitule. Mon code ne beug pas. Je n'ai aucune erreur de compilation dans mon code, et au lancement il n'y aucun problème. Sauf que mon texte ne s'affiche pas...

Pour l'erreur, c'est une erreur dans le code du projet que NyxOuf m'a donné...

Je sais que tout cela vous parait sûrement très bizarre, mais je suis en IUT informatique, et je ne comprends vraiment pas d'où cela vient. J'ai d'ailleurs trouvé un forum en anglais qui relatait le même problème, mais sans réponse...

Et pour le DBG...debugger, je l'ai fait mais puisque ce n'est pas un problème de mon code... Je pense que mon erreur vient de ma machine...

Sur le projet que je t'ai passé j'essaie d'ouvrir la police Calibri, que j'ai joint avec, place la dans le même répertoire que l'executable (build/Debug).

Le debugger va te montrer à quel endroit dans le code l'erreur à eu lieu.
 
Ton projet a parfaitement fonctionner !!!!!! :mouais: après avoir mis calibri dans le dossier debug... normal...

Sa fait 4 jours que je me prends la tête sur SDL_TTF qui "ne marche pas", parce que j'ai oublié de Blitter la surface texte ^^........:mad: Je crois que j'ai déjà fait des erreurs qui m'ont pris la tête mais celle là bat tous les records.... Un grand merci à vous, il m'aura fallu comparer mon code avec le projet transmit pour m'en rendre compte... ^^... Un grand merci à vous, mes sauveurs !!! :up:

Et désolé pour votre temps perdus sur un cas vraiment désespéré....:rateau: ;)

Merci