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 :

SDL2 Mac example projet


Sujet :

SDL

  1. #1
    Futur Membre du Club
    SDL2 Mac example projet
    Bonjour,

    Je lance un appel ; je cherche un tout petit projet, tout prêt utilisant la SDL2 (image, ttf) sous Xcode ou Eclipse. Je rame pour configurer les ide.

    Merci d'avance.

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

    Bonjour,

    C'est une chose que je souhaite faire depuis longtemps. Mais n'ayant pas de Mac, cela était difficile. De plus, l'installation d'une machine virtuelle n'est pas des plus simples. Mais par chance, ce weekend, j'ai trouvé une méthode très simple à base de QEMU/KVM.
    En bref, maintenant, j'ai une VM macOS sous Linux.

    Et je peux enfin faire des choses, comme aider les gens avec XCode.

    Voici une petite archive, d'un premier projet SDL2 (uniquement), pour XCode (11.3).
    Aucune idée si cela peut marcher si une autre machine que la mienne (même avec l'expérience de faire ce genre de template, Apple rend la chose compliquée).

    À vous de tester (s'il vous plaît). Aussi, je ne sais pas si c'est la manière la plus propre de faire, notamment car j'embarque la SDL2 dans l'exécutable.
    Note : le code du programme n'ouvre pas de fenêtre. Enfin, si, mais pas visible sur macos. Puis il attends trois secondes, ensuite il s'arrête.
    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.

  3. #3
    Futur Membre du Club
    Bonjour LittleWhite,

    Génial je vais tester en ce moment je synthétise plusieurs tuto pour codeblock, je vais essayer aussi avec codewarrior.

    Merci

  4. #4
    Futur Membre du Club
    Bonjour,

    Ton projet fonctionne, mais Xcode est très 'space'.. il exécute ton projet sans message d'erreur pour te dire une fois la fenêtre fermée qui ne trouve pas SDL2 avec l'include
    de plus il ne supporte pas SDL2.framework mais l'alias SDL2. Et il a fallu changer aussi la 'cible de déploiement' en 10.12 (l'Os).

    ensuite j'ai rajouté du code pour essayer SDL2 image, mais même avec ou sans chemin du fichier image.png et avec le fichier bien évidement dans le dossier j'ai toujours un pointeur null sur mon 'SDL_Surface'...

    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
    #include <SDL2/SDL.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <OpenGL/gl3.h>
    #include <SDL2_image/SDL_image.h>
    #include <SDL_ttf/SDL_ttf.h>
     
    int main(int argc, char** argv)
    {
        //SDL_Surface * ws = NULL;
        SDL_Surface * is = NULL,*texte = NULL;
        SDL_DisplayMode dpm;
        SDL_GetDesktopDisplayMode(0, &dpm);
        SDL_Renderer *renderer = NULL;
        TTF_Font *fonts;
        SDL_Color ct ={ 255, 255, 255, 255 };
        SDL_Rect pt;
     
        int quit = 0;
     
        TTF_Init();
     
        if (TTF_Init() != 0){
            SDL_Quit();
            return 1;
        }
       fonts = TTF_OpenFont("Cochin.ttf",15);
     
        SDL_Event event;IMG_Init(IMG_INIT_PNG);
        /* Initialisation simple */
        if (SDL_Init(SDL_INIT_VIDEO) != 0 )
        {
            fprintf(stdout,"Échec de l'initialisation de la SDL (%s)\n",SDL_GetError());
            return -1;
        }
     
            /* Création de la fenêtre */
            SDL_Window* pWindow = NULL;
            pWindow = SDL_CreateWindow("Ma première application SDL2",SDL_WINDOWPOS_UNDEFINED,
                                       SDL_WINDOWPOS_UNDEFINED,
                                       800,
                                       600,
                                       SDL_WINDOW_RESIZABLE);
     
     
        renderer = SDL_CreateRenderer(pWindow, -1, SDL_RENDERER_ACCELERATED|SDL_RENDERER_PRESENTVSYNC);
        SDL_Surface * image = SDL_LoadBMP("&#8206;&#8296;image.png");
        SDL_Texture * texture = SDL_CreateTextureFromSurface(renderer, image);

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

    J'ai eu le même soucis avec SDL2.h et je ne comprends absolument pas la raison (surprise ! ...).
    J'ai un template avec SDL2 SDL2image et SDL2TTF de lier, mais il ne vous aidera pas plus que cela.
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    fonts = TTF_OpenFont("Cochin.ttf",15);

    Vous ne vérifiez pas si la fonction retourne un pointeur NULL. C'est dommage, ça pourrait aider (pour afficher un message d'erreur clair). Pareil pour l'image (dont le nom contient des caractères étranges ). Autrement, le piège étant dans l'emplacement où le programme est lancé. Deux possibilités logiques :
    • soit dans le dossier du projet XCode ;
    • soit dans le dossier de l'exécutable généré (un dossier généré à la compilation).

    Dans le second cas, ce sera galère. Dans le premier cas, il faut donc mettre vos ressources à côté du projet XCode.
    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.

  6. #6
    Futur Membre du Club
    Oui je sais que 'fonts' me renvoie aussi un pointeur 'null'.
    Le problème est le même, il faut que je trouve où il veut les fichiers images ou fonte de caractère, surtout que j'ai déjà réussi a affichée une image mais un magnifique bug m'avait foutue en l'air le projet.

    j'y retourne...

    ps; les caractères étranges dans le nom du fichier image provient uniquement de l'insertion du code dans le message.

  7. #7
    Futur Membre du Club
    la suite... ce qui marche avec codeblock sur Pc, fonctionne pas avec Xcode et cela ne vient pas du fichier image, j'avais réussi avec une ancienne version d'Xcode, mais bon...