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

Développement 2D, 3D et Jeux Discussion :

Vos premières fenêtres avec la SDL 2


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    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 Vos premières fenêtres avec la SDL 2
    Bonjour à tous,

    Suite au tutoriel d'installation de la bibliothèque SDL 2, ce tutoriel vous enseignera la création de fenêtres avec la nouvelle version de la bibliothèque de jeux.

    Pour démarrer encore plus vite, n'hésitez pas à télécharger les projets SDL 2 pré-configurés.

    Bonne lecture et j'espère voir rapidement vos réalisations avec la SDL 2.0.
    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.

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    sans emploi
    Inscrit en
    Juillet 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Juillet 2019
    Messages : 35
    Points : 1
    Points
    1
    Par défaut
    Ne fonctionne pas.

  3. #3
    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
    OK, cool story !
    Lorsque l'on remonte un souci sur un tutoriel, ou avec un logiciel, il faut au moins expliqué ce que vous avez fait, dans quelle condition et quelles sont les problèmes que vous rencontrez. Sans quoi, cela ne fait qu'ajouter un message inutile sur Internet.

    J'ai dans l'espoir que vous viendrez nous dire qu'est ce qui ne marche pas et dans quelle condition .
    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.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    sans emploi
    Inscrit en
    Juillet 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Juillet 2019
    Messages : 35
    Points : 1
    Points
    1
    Par défaut
    Qu'est-ce que vous voulez que je vous dise, ça ne fonctionne pas c'est tout, et c'est pas un message inutile, ça ne fonctionne pas, c'est une information importante, savoir pourquoi ne m'intéresse pas, de toute façon il y a des erreurs partout, je veux simplement créer une fenêtre avec la SDL, je suis le tuto, comme beaucoup d'autres, et ça ne fonctionne pas, comme beaucoup d'autres, c'est pas moi qui ai un problème, mais ceux qui font les tutos, c'est a eux qu'il faut demander et d'ailleurs, c'est à se demander s'ils ne le font pas exprès...

  5. #5
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    De la part de quelqu'un qui tente d'afficher un pixel à l'écran depuis deux ans , oui je suis sur que le probleme ne vient pas de toi

  6. #6
    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
    C'est sur que l'on avance. Si vous voulez des tutoriels meilleurs, peut être il faut aider les auteurs à gérer les cas tordus qui peut exister en informatique. Il est possible que vous ayez une configuration particulière qui demande un soin particulier.

    En tout cas, ne pas dire ce que vous avez testé, ne pas dire ce qui ne marche pas (message d'erreur ou autre), on ne peut rien en tirer.

    C'est d'autant plus navrant que Developpez.com est le seul site à offrir des templates de projet prêt à l'emploi. Il suffit de décompresser et cela fonctionne. Alors, en effet, je ne suis pas à l'abri d'une erreur, c'est pourquoi si vous voulez être utile et non pas juste un troll, il va falloir y mettre du votre.
    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.

  7. #7
    Membre éprouvé
    Homme Profil pro
    Programmeur des cavernes
    Inscrit en
    Août 2017
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Programmeur des cavernes
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2017
    Messages : 364
    Points : 1 240
    Points
    1 240
    Par défaut
    Citation Envoyé par yopso Voir le message
    Qu'est-ce que vous voulez que je vous dise, ça ne fonctionne pas c'est tout, et c'est pas un message inutile, ça ne fonctionne pas, c'est une information importante, savoir pourquoi ne m'intéresse pas, de toute façon il y a des erreurs partout, je veux simplement créer une fenêtre avec la SDL, je suis le tuto, comme beaucoup d'autres, et ça ne fonctionne pas, comme beaucoup d'autres, c'est pas moi qui ai un problème, mais ceux qui font les tutos, c'est a eux qu'il faut demander et d'ailleurs, c'est à se demander s'ils ne le font pas exprès...

    Hé bien tu vas voir la doc officielle, le wiki de libsdl.org, et tu te débrouilles avec.
    Ensuite tu fais un tuto "qui marche".

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    sans emploi
    Inscrit en
    Juillet 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Juillet 2019
    Messages : 35
    Points : 1
    Points
    1
    Par défaut
    tout ce que je demande c'est quelques lignes de codes qui fonctionnent comme point de depard, apres je me debrouille. Je suis sur raspbian, j'ai installe geany, code block, j'ai lu plein de tutos essaye les examples, rien n'y fait. Pas moyen d'afficher une boite avec un pixel dedans, que ce soit avec la sdl 1 ou 2.

  9. #9
    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
    Je me lance ...,

    Je viens de réinstaller un Raspberry Pi, donc on peut le considérer comme vierge.
    On commande par installer la bibliothèque SDL 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    apt-get install libsdl2-dev
    (Je ne m'occupe pas de SDL2_image, ou SDL2_TTF, mais le principe sera le même.)

    Et comme mon système est vierge, j'installe aussi un compilateur et make pour lire les Makefiles :
    Ensuite, on prend le code d'un template, comme proposé précédemment :
    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
    #include <SDL2/SDL.h>
     
    #include <stdio.h>
     
    int main(int argc, char** argv)
    {
        /* 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,
                                                                      640,
                                                                      480,
                                                                      SDL_WINDOW_SHOWN);
     
            if( pWindow )
            {
                SDL_Delay(3000); /* Attendre trois secondes, que l'utilisateur voit la fenêtre */
     
                SDL_DestroyWindow(pWindow);
            }
            else
            {
                fprintf(stderr,"Erreur de création de la fenêtre: %s\n",SDL_GetError());
            }
        }
     
        SDL_Quit();
     
        return 0;
    }
    On ne prend que le Makefile et le fichier .c, car les bibliothèques présentes dans le template sont pour une architecture x86 et le Raspberry Pi est en architecture ARM.

    On utilise le Makefile suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    all:
    	gcc -Wall -Wextra -lSDL2-2.0 main.c -o main
     
    run:
    	LIBGL_DEBUG=verbose ./main
     
    clean:
    	rm -f ./main
    Le fichier main.c est dans le même dossier que le Makefile.

    Bref, ça compile sans surprise.

    Si vous avez l'erreur (très improbable) :
    * failed to open vchiq instance
    Il faut ajouter l'utilisateur au groupe 'video'.

    Et voilà, vous lancez le programme, vous avez une fenêtre qui s'ouvre, pendant trois secondes et qui se ferme.
    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.

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    sans emploi
    Inscrit en
    Juillet 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Juillet 2019
    Messages : 35
    Points : 1
    Points
    1
    Par défaut
    Merci pour la réponse mais avec geany :

    /tmp/geany_run_script_P7YHL0.sh: 7: /tmp/geany_run_script_P7YHL0.sh: ./makefile: Permission denied


    ------------------
    (program exited with code: 126)
    Press return to continue

  11. #11
    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
    Ah ! Enfin un message d'erreur.
    Donc, cela semble être un problème de configuration de Geany. Il tente (peut être l'avez vous indiqué) d'exécuter un fichier ./makefile. Il faut savoir qu'un Makefile ne s'exécute pas directement, il faut utiliser la commande make, pour l'exécuter. C'est-à-dire : il faut exécuter make dans le dossier où se trouve le Makefile. Par défaut, make lira le fichier Makefile du dossier courant et fera ce qu'il doit faire.
    En bref : soit vous utilisez le terminal (ce que j'ai fait moi), soit vous reconfigurez Geany pour faire un make et non un ./makefile
    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.

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    sans emploi
    Inscrit en
    Juillet 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Juillet 2019
    Messages : 35
    Points : 1
    Points
    1
    Par défaut
    pi@pi:~/Desktop/c $ make makefile
    makefile:2: *** séparateur manquant (vouliez-vous dire TAB au lieu des 8 espaces*?). Arrêt.
    pi@pi:~/Desktop/c $

    - Mais je préfèrerais avoir 1 seul fichier : fenetre.c que je compile dans geany et que j'exécute. Si j'exécute votre bout de code que vous m'avez donné, j'ai l'erreur dans une fenêtre terminal :

    /tmp/geany_run_script_VH3WL0.sh: 7: /tmp/geany_run_script_VH3WL0.sh: ./main: not found


    ------------------
    (program exited with code: 127)
    Press return to continue
    - J'ai lu sur internet que la SDL pouvait avoir des problèmes de compatibilités sur RASPBIAN et qu'il existait des alternatives comme SFML, GLFW ou ALLEGRO, sachant que j'aimerais une solution aussi simple que possible pour créer une fenêtre et afficher un pixel dedans, est-ce que c'est seulement possible dans la pratique (en C avec GEANY dans 1 seul fichier fenêtre.c) ?

  13. #13
    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
    Premièrement, la commande à compiler, c'est make et non pas make makefileEnsuite, je suis obligé de vous redonner le Makefile, le copier-coller d'une session SSH ne sait pas passer aussi bien que prévu (espace VS tabulation). Voici le bon Makefile :
    Code makefile : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    all:
    	gcc -Wall -Wextra -lSDL2-2.0 main.c -o main
     
    run:
    	LIBGL_DEBUG=verbose ./main
     
    clean:
    	rm -f ./main


    Pour l'erreur :
    /tmp/geany_run_script_VH3WL0.sh: 7: /tmp/geany_run_script_VH3WL0.sh: ./main: not found
    Vu que vous n'avez pas réussi à compiler, c'est normal . Maintenant que vous devriez réussir, grâce au bon Makefile, cela se passera mieux.

    - Mais je préfèrerais avoir 1 seul fichier : fenetre.c que je compile dans geany et que j'exécute. Si j'exécute votre bout de code que vous m'avez donné, j'ai l'erreur dans une fenêtre terminal :
    Bah, ça, c'est à vous de configurer correctement votre Geany.
    Aussi, vous pouvez renommer le fichier main.c en fenetre.c, mais il faut changer le Makefile, en conséquence (pour indiquer le bon fichier à GCC).

    - J'ai lu sur internet que la SDL pouvait avoir des problèmes de compatibilités sur RASPBIAN et qu'il existait des alternatives comme SFML, GLFW ou ALLEGRO, sachant que j'aimerais une solution aussi simple que possible pour créer une fenêtre et afficher un pixel dedans, est-ce que c'est seulement possible dans la pratique (en C avec GEANY dans 1 seul fichier fenêtre.c) ?
    Restez avec la SDL 2. Possible que ce que vous avez lu sur Internet concerne la SDL 1. En tout cas, si la SDL 2 ne fonctionne pas, ce serait grave, beaucoup de projet reposent dessus.
    Pour la méthode la plus simple, j'ose croire que c'est bien la SDL 2 qui est la plus simple. Ou alors, changez totalement de langage et de technologie. Car tout ce que vous avez cité, n'est pas plus simple et cela vous demandera encore plus d'effort.
    Aussi, votre histoire de fichier fenêtre.c, en réalité, dans aucun cas, vous n'êtes obligé de vous en tenir à ce nom de fichier. Cela marchera quelque soit le nom du fichier.

    Sinon, car j'ai besoin de dédramatiser : la méthode la plus simple : vous prenez GIMP, vous mettez votre pixel et vous enregistrez le fichier. Au double clic sur le fichier produit avec GIMP, vous aurez un pixel à l'écran. Appelez le fenêtre.c, si vous voulez .
    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.

  14. #14
    Nouveau Candidat au Club
    Homme Profil pro
    sans emploi
    Inscrit en
    Juillet 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Juillet 2019
    Messages : 35
    Points : 1
    Points
    1
    Par défaut
    Mon fichier s'appelle main.c pour suivre exactement ce que vous me dites. J'ai modifier makefile. J'aimerais bien me passer de makefile, j'ai un petit programme qui marche très bien sans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <stdio.h>
    int main(void)
    {
        int ch;
        while ((ch = getchar()) != '\n')
            putchar(ch);
        putchar('\n');
        return 0;
    }
    J'aimerais la même chose qui initialise la sdl 1 ou 2, qui me crée une fenêtre et m'affiche un point dedans. Je sais, vous allez me dire que dans ce cas ce n'est pas la même chose et je rétorquerais qu'effectivement. Initialiser la sdl c'est 1 ligne, dire à la sdl d'utiliser son module vidéo : 1 ligne, demander à la sdl de créer une fenêtre : 1 ligne ou 2 je sais pas, mettre un délais ou attendre qu'une touche soit appuyée : 1 ou 2 lignes. Ça fait environ 6 lignes, me trompe-je ? Avec les includes ints et divers bricoles ça fait moins de 15 lignes. Je sais ce que je risque de m'entendre dire : "mais vous oubliez cette ligne, ça 16" sur quoi je répondrais qu'effectivement ça fait 16 lignes, que je n'ai pas...
    Pour plus de simplicités, je me passerais du teste d'initialisation.
    Pour GIMP, c'est une blague j'espère, je veux créer une fenêtre et afficher un point dedans car avec ce début de code je pourrais aller plus loin, m'exercer et comprendre comment ça marche, c'est comme ça que j'apprends le mieux. Mais il me faut un point de départ, ce que je ne trouve pas, malgré mes nombreuses recherche en français, en anglais et je compte passer au chinois. Pourtant c'est moins de 20 lignes, mais non, je n'arrive pas à mettre la main dessus.
    Evidemment, le top du top pour moi serait de me passer de la sdl, il doit bien être possible d'implanter des octets dans la mémoire en C, parce qu'il devient très compliqué d'utiliser des outils bourré de vocabulaires à la syntaxe très personnel et une ponctuation difficile d'accès au clavier, vraiment pénible à utiliser. On peut pas être de bonne foi et soutenir le contraire, ça fait plus de 30 ans que je fais de l'informatique et je vois bien la progression de ce domaine qui n'est vraiment pas sur le chemin de l'optimisation et l'ergonomie mais plutôt sur la boulimie par la complexification, et un cloisonnement bien hermétique.

  15. #15
    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
    Pour plus de simplicités, je me passerais du teste d'initialisation.
    Ce serait une très grosse erreur et prendre des raccourcis qui ne font que faire perdre du temps.

    Pour GIMP, c'est une blague j'espère
    Évidemment que c'est une plaisanterie.

    ça fait plus de 30 ans que je fais de l'informatique et je vois bien la progression de ce domaine qui n'est vraiment pas sur le chemin de l'optimisation et l'ergonomie mais plutôt sur la boulimie par la complexification, et un cloisonnement bien hermétique.
    En même temps, à l'origine, il n'y avait pas de carte graphique, tout juste 256 couleurs (et encore). Donc, il suffisait d'écrire dans une mémoire partagée entre le CPU et l'écran et c'était bon (totalement non secure). Maintenant, l'informatique est bien plus avancée (car les gens ont voulus toujours plus de choses) et on est obligé de passer par des encapsulations, dont la SDL, car la SDL permet de simplifier l'affichage de telle ou telle chose.
    C'est comme avec une voiture, vous n'êtes pas entrain de vous plaindre qu'il y a l'ABS, le système de détection de lignes, les radars, le moteur avec turbo, injection et je ne sais pas quoi d'autres et vous n'êtes pas entrain de râler dessus pour dire cela se complexifie, cela est de la boulimie, du cloisonnement. Sinon, vous prenez un vélo, le vélo c'est simple et tout y est accessible. En informatique, prenez un microcontrôleur .

    Pourtant c'est moins de 20 lignes, mais non, je n'arrive pas à mettre la main dessus.
    Oui, enfin, faudrait arrêter de compter les lignes, c'est un exercice qui ne sert à rien.

    Pour compiler un programme, il faut utiliser GCC. Vous pouvez évidemment vous passer d'un Makefile (d'ailleurs, vous devriez lire des tutoriels dessus). Car en réalité, le Makefile n'est qu'une syntaxe pour dire : executer telle ligne, telle ligne et telle ligne. Le Makefile que je vous ai donné est le plus simple du monde, et au final il ne fait qu'exécuter la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -Wall -Wextra -lSDL2-2.0 main.c -o main
    Ce qui veut dire que si vous tapez la ligne suivante dans le terminal (à partir du bon dossier), vous compilez le programme.

    Ce programme affiche un point rouge sur l'écran (il n'y a pas la gestion des événements (car tout est expliqué ici)) :
    Code c : 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
    #include <SDL2/SDL.h>
     
    #include <stdio.h>
     
    int main(int argc, char** argv)
    {
        /* 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;
    	SDL_Renderer *pRendered = NULL;
    	SDL_CreateWindowAndRenderer(640, 480, 0, &pWindow, &pRendered);
     
            if(pWindow && pRendered)
            {
                SDL_SetRenderDrawColor(pRendered, 255, 0, 0, 255); // Détermine la couleur
                SDL_RenderDrawPoint(pRendered, 400, 300); // Affiche un point
                SDL_RenderPresent(pRendered); // Affiche l'image à l'écran
     
                SDL_Delay(3000); /* Attendre trois secondes, que l'utilisateur voit la fenêtre */
     
                SDL_DestroyWindow(pWindow);
            }
            else
            {
                fprintf(stderr,"Erreur de création de la fenêtre: %s\n",SDL_GetError());
            }
        }
     
        SDL_Quit();
     
        return 0;
    }
    Il est à noter que je ne connaissais pas l'existence de cette méthode pour afficher un point à l'écran. J'ai fait une recherche Google et j'ai trouvé cette discussion : https://stackoverflow.com/questions/...els-in-sdl-2-0
    Si j'ai un dernier conseil à vous donner, c'est qu'au lieu d'apprendre le chinois, vous devriez essayer l'anglais avant .
    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.

  16. #16
    Nouveau Candidat au Club
    Homme Profil pro
    sans emploi
    Inscrit en
    Juillet 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Juillet 2019
    Messages : 35
    Points : 1
    Points
    1
    Par défaut
    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
    ./makefile: 1: ./makefile: all:: not found
    main.c: In function ‘main’:
    main.c:5:14: warning: unused parameter ‘argc’ [-Wunused-parameter]
     int main(int argc, char** argv)
              ~~~~^~~~
    main.c:5:27: warning: unused parameter ‘argv’ [-Wunused-parameter]
     int main(int argc, char** argv)
                        ~~~~~~~^~~~
    ./makefile: 4: ./makefile: run:: not found
    libGL: screen 0 does not appear to be DRI2 capable
    libGL: Can't open configuration file /etc/drirc: No such file or directory.
    libGL: Can't open configuration file /home/pi/.drirc: No such file or directory.
    libGL: Can't open configuration file /etc/drirc: No such file or directory.
    libGL: Can't open configuration file /home/pi/.drirc: No such file or directory.
    ./makefile: 7: ./makefile: clean:: not found
     
     
    ------------------
    (program exited with code: 0)
    Press return to continue
    Et la compilation de main donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    gcc -Wall -o "main" "main.c" (dans le dossier : /home/pi/Desktop/c)
    /usr/bin/ld: /tmp/ccHStxOg.o: in function `main':
    main.c:(.text+0x18): undefined reference to `SDL_Init'
    /usr/bin/ld: main.c:(.text+0x30): undefined reference to `SDL_GetError'
    /usr/bin/ld: main.c:(.text+0x7c): undefined reference to `SDL_CreateWindowAndRenderer'
    /usr/bin/ld: main.c:(.text+0xb0): undefined reference to `SDL_SetRenderDrawColor'
    /usr/bin/ld: main.c:(.text+0xc4): undefined reference to `SDL_RenderDrawPoint'
    /usr/bin/ld: main.c:(.text+0xd0): undefined reference to `SDL_RenderPresent'
    /usr/bin/ld: main.c:(.text+0xd8): undefined reference to `SDL_Delay'
    /usr/bin/ld: main.c:(.text+0xe4): undefined reference to `SDL_DestroyWindow'
    /usr/bin/ld: main.c:(.text+0xf4): undefined reference to `SDL_GetError'
    /usr/bin/ld: main.c:(.text+0x10c): undefined reference to `SDL_Quit'
    collect2: error: ld returned 1 exit status
    Compilation échouée.

  17. #17
    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
    Premier log que vous envoyez, vous tentez d'exécuter le Makefile. Le Makefile ne s'exécute pas. Il est lu par le programme make. Bref, j'ai déjà expliqué.

    Le second log, vous tenter de compiler un programme utilisant la bibliothèque SDL, sans indiquer la bibliothèque au compilateur, du coup, il ne sait pas interpréter les fonctions de la SDL. Bref, vous n'avez pas suivi la commande que je vous ai donné, extraite du Makefile. Je parle de cette commande, qui appelle bien GCC en précisant la SDL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -Wall -Wextra -lSDL2-2.0 main.c -o main
    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.

  18. #18
    Membre expérimenté Avatar de Tonton Nico
    Homme Profil pro
    Ingénieur
    Inscrit en
    Septembre 2017
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 398
    Points : 1 320
    Points
    1 320
    Par défaut
    TontonNico

    On me dit souvent que je ressemble à Einstein... mais plutôt à Frank que Albert

  19. #19
    Nouveau Candidat au Club
    Homme Profil pro
    sans emploi
    Inscrit en
    Juillet 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Juillet 2019
    Messages : 35
    Points : 1
    Points
    1
    Par défaut
    pi@raspberrypi:~/Desktop/c $ gcc -Wall -Wextra -lSDL2-2.0 main.c -o main
    main.c: In function ‘main’:
    main.c:5:14: warning: unused parameter ‘argc’ [-Wunused-parameter]
    int main(int argc, char** argv)
    ~~~~^~~~
    main.c:5:27: warning: unused parameter ‘argv’ [-Wunused-parameter]
    int main(int argc, char** argv)
    ~~~~~~~^~~~
    pi@raspberrypi:~/Desktop/c $

  20. #20
    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
    Oui, ce sont des avertissements de la part du compilateur ...
    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.

Discussions similaires

  1. ma première fenêtre avec NetBeans
    Par alfred5 dans le forum NetBeans
    Réponses: 7
    Dernier message: 07/01/2011, 16h33
  2. Multiple fenêtre avec SDL
    Par tayri dans le forum SDL
    Réponses: 3
    Dernier message: 23/05/2008, 09h26
  3. Ouvrir fenêtre avec param
    Par Saber22 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 12/05/2003, 15h48

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