IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

SDL TTF Rendu de texte dans une fenêtre


Sujet :

SDL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    dev
    Inscrit en
    Janvier 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Janvier 2021
    Messages : 10
    Points : 7
    Points
    7
    Par défaut SDL TTF Rendu de texte dans une fenêtre
    Bonjour à tous, j'ai un soucis avec mon code la fonction SDL_CreateTextureFromSurface renvoie NULL et je n'arrive pas à trouver pourquoi.. Merci de votre aide ! Le code :

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    nclude <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
    #include <SDL_ttf.h>
     
    #define LARGEUR_WINDOW 600
    #define LONGUEUR_WINDOW 800
     
    void ExitWithError(const char* message);
    void DestroyAndExitWithError(const char* message, SDL_Renderer* renderer, SDL_Window *window);
    void afficherTexture(const char* chemin, SDL_Renderer* renderer, SDL_Window* window);
     
    int main(int argc, char** argv)
    {
        SDL_Window* window = NULL;
        SDL_Renderer* renderer = NULL;
     
        if (SDL_Init(SDL_INIT_VIDEO) != 0)
        {
            ExitWithError("SDL n'a pas pu se lancer.");
        }
     
        window = SDL_CreateWindow("Titre de la fenetre", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, LONGUEUR_WINDOW, LARGEUR_WINDOW, 0);
     
        if (window == NULL) {
            ExitWithError("La fenetre n'a pas pu s'ouvrir.");
        }
     
        /*-----------------------------------------------------------*/
     
        renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_SOFTWARE);
     
        if (renderer == NULL) {
            ExitWithError("Création rendu échoué.");
        }
     
        if (TTF_Init() == -1) {
            printf("TTF_Init: %s\n", TTF_GetError());
            exit(EXIT_FAILURE);
        }
     
        TTF_Font* police = NULL;
     
        police = TTF_OpenFont("../../../../Desktop/polices/Outwrite.ttf", 65);
     
        SDL_Color couleur = { 255, 255, 255 };
        SDL_Surface* scoreSurface = { 0 };
     
        if ((scoreSurface = TTF_RenderText_Solid(police, "1", couleur) == NULL)) {
            TTF_CloseFont(police);
            TTF_Quit();
            DestroyAndExitWithError("TTF_RenderText_Solid", renderer, window);
        }
     
        SDL_Texture* Message = SDL_CreateTextureFromSurface(renderer, scoreSurface);
        if (Message == NULL) {
            TTF_CloseFont(police);
            TTF_Quit();
            DestroyAndExitWithError("SDL_CreateTextureFromSurface", renderer, window);
        }
    Correction:

    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
     SDL_Color couleur = { 255, 255, 255 };
        SDL_Surface* scoreSurface = TTF_RenderText_Solid(police, "aaza", couleur);
     
     
        if (scoreSurface == NULL) {
            TTF_CloseFont(police);
            TTF_Quit();
            DestroyAndExitWithError("TTF_RenderText_Solid", renderer, window);
        }
     
        SDL_Texture *Message = SDL_CreateTextureFromSurface(renderer, scoreSurface);
        if (Message == NULL) {
            TTF_CloseFont(police);
            TTF_Quit();
            DestroyAndExitWithError("SDL_CreateTextureFromSurface", renderer, window);
        }

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Vous ne vérifiez pas si la police est correctement chargée.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Editer du texte dans une fenêtre
    Par Romainmar dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 10/06/2008, 15h15
  2. Couleur du texte dans une fenêtre graphique
    Par luilui dans le forum MATLAB
    Réponses: 2
    Dernier message: 03/06/2008, 23h02
  3. Affichage de texte dans une fenêtre
    Par whitebird001 dans le forum MFC
    Réponses: 3
    Dernier message: 19/05/2008, 00h22
  4. Scrolling texte dans une fenêtre API W32
    Par vec dans le forum Windows
    Réponses: 3
    Dernier message: 07/12/2006, 11h01
  5. Comment envoyer du texte dans une fenêtre spéciale ?
    Par Coussati dans le forum Composants VCL
    Réponses: 11
    Dernier message: 25/10/2005, 09h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo