IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> [Résolu]Ecrire du texte sur une fenêtre en C avec SDL2 et TTF
Options
asanque
posté 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.
Go to the top of the page
 
+Quote Post
asanque
posté 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 ^^
Go to the top of the page
 
+Quote Post
vivid
posté 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.


--------------------
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 19th March 2024 - 03:46