[Résolu]Ecrire du texte sur une fenêtre en C avec SDL2 et TTF |
Bienvenue invité ( Connexion | Inscription )
[Résolu]Ecrire du texte sur une fenêtre en C avec SDL2 et TTF |
12 Feb 2016, 09:25
Message
#1
|
|
Nouveau Membre Groupe : Membres Messages : 2 Inscrit : 12 Feb 2016 Membre no 198 058 |
Bonsoir à tous,
Je cherche à écrire du texte sur une fenêtre créée avec SDL2 (je travaille avec Xcode au cas où cela ai de l'importance). J'ai trouvé un cours sur le net pour faire cela avec SDL1.2 et j'ai essayé de l'adapter à la SDL2. Voici le code en question : Code // // main.c // test4 // // Created by Benoit Castagnetto on 10/02/2016. // Copyright © 2016 Benoit Castagnetto. All rights reserved. // #include <stdlib.h> #include <stdio.h> #include <SDL2_image/SDL_image.h> #include <SDL2/SDL.h> #include <SDL2_ttf/SDL_ttf.h> int main (int argc, char** argv) { SDL_Window *ecran = NULL; SDL_Surface *texte = NULL; //*fond = NULL; SDL_Rect position; SDL_Event event; TTF_Font *police = NULL; SDL_Color couleurNoire = {0, 0, 0}; int continuer = 1; SDL_Init(SDL_INIT_VIDEO); TTF_Init(); // ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF); // SDL_WM_SetCaption("Gestion du texte avec SDL_ttf", NULL); ecran = SDL_CreateWindow("test", 100, 100, 640, 480, SDL_WINDOW_SHOWN); SDL_Surface *pSurf = SDL_GetWindowSurface(ecran); //fond = IMG_Load("moraira.jpg"); /* Chargement de la police */ police = TTF_OpenFont("Arial", 65); /* Écriture du texte dans la SDL_Surface texte en mode Blended (optimal) */ texte = TTF_RenderText_Blended(police, "Salut", couleurNoire); while (continuer) { SDL_WaitEvent(&event); switch(event.type) { case SDL_QUIT: continuer = 0; break; } SDL_FillRect(pSurf, NULL, SDL_MapRGB(pSurf->format, 255, 255, 255)); position.x = 0; position.y = 0; // SDL_BlitSurface(fond, NULL, pSurf, &position); /* Blit du fond */ // position.x = 60; // position.y = 370; SDL_BlitSurface(texte, NULL, pSurf, &position); /* Blit du texte */ SDL_UpdateWindowSurface(ecran); } TTF_CloseFont(police); TTF_Quit(); SDL_FreeSurface(texte); SDL_Quit(); return EXIT_SUCCESS; } (J'ai supprimé le pointeur en commentant toutes les lignes y faisant référence, il est, je pense, inutile dans mon exemple.) Lorsque je lance le build la réponse est "build succeeded" mais ensuite à la ligne Code texte = TTF_RenderText_Blended(police, "Salut", couleurNoire); j'ai une erreur "thread 1 exc_bad_access (code=1 address=0x0)". Le debug me dit "TTF_OpenFont: Couldn't open Arial" pourtant dans /Library/Fonts j'ai bien cette font de dispo et dans xcode je l'ai ajouté directement au même niveau que le main.c Ce message a été modifié par asanque - 12 Feb 2016, 11:32. |
|
|
12 Feb 2016, 11:31
Message
#2
|
|
Nouveau Membre Groupe : Membres Messages : 2 Inscrit : 12 Feb 2016 Membre no 198 058 |
Bon au final j'ai trouvé qu'en mettant le chemin absolu pour la police ça finit par fonctionner.
Pourtant le chemin est bien configuré en relatif dans Xcode donc je comprends pas trop le soucis mais c'est pas grave du moment que ça fonctionne ^^ |
|
|
5 Apr 2016, 12:11
Message
#3
|
|
Adepte de Macbidouille Groupe : Membres Messages : 117 Inscrit : 12 Jul 2005 Membre no 42 288 |
Au pire j'utilise un minimum cocoa, mais surtout dés que j'ai un peu de temps je ferait un .h pour alemiorer la gestion du texte avec SDL. C'est si bordelique leur code avec Objective C, pourquoi faire simple quand on peut faire compliquer. SDL est une veritable bouffer d'air frais. Ce message a été modifié par vivid - 5 Apr 2016, 12:12. -------------------- |
|
|
Nous sommes le : 26th September 2024 - 12:11 |