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

API graphiques Discussion :

Recherche bilbliothèque 2D


Sujet :

API graphiques

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 36
    Points : 22
    Points
    22
    Par défaut Recherche bilbliothèque 2D
    Bonjour à tous,

    En espérant ne pas ouvrir un x-ième topic sur le même sujet, je voudrais avoir la réponse à cette question : Quelle est la bibliothèque la plus efficace, sachant que je travaille sur un projet sur lequel je ne fait que du pixel par pixel, en dessinant directement les pixels en utilisant leur adresses : je ne passe donc pas par des fonction compliqué donnée par ma bibliothèque.

    J'ajoute que je travaille avec la SDL, avec laquelle je travaille bien, mais dont je peut facilement changer puisqu'elle ne me sers uniquement à gérer la fenêtre et la mise à jour de l'écran.

    De fait, j'avais entendus dire que la SDL n'était pas la meilleure bibliothèque, et qu'il valais mieux utiliser la SFML.

    Quel est votre avis sur la question ?

    En vous remerciant d'avance pour vos réponses,

    Lapotose

  2. #2
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    De ce que j'ai constaté, la SFML est en effet plus efficace (il semble qu'elle utilise "vraiment" le GPU, contrairement à la SDL qui reste beaucoup plus sur le CPU).
    Mais attention, la SFML ne fonctionne qu'en C++ il me semble !
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  3. #3
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    C'est vrai que la SDL est pas mal mais comme dit, n'utilise pas directement le GPU cela dit, on peut utiliser des buffer matériels si je me souviens bien, à vérifier. SDL 2 encore en cours de développement mais utilisable je crois utilise quant à elle, le GPU il me semble.

    Il me semble également qu'il existe un binding pour le C en ce qui concerne la SFML d'après ce qu'un de ces créateurs m'a une fois dit mais ca remonte à un certains temps.
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 209
    Points
    23 209
    Par défaut
    Bonjour,

    La SFML a bien un binding C : la CSFML

  5. #5
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 186
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 186
    Points : 17 126
    Points
    17 126
    Par défaut
    Sinon, il y a la manipulation directe d'openGL, qui reste envisageable (il suffit souvent d'une camera orthographique)

    Mais j'ai un penchant pour la SFML (dont la version 2.0 vient de sortir)

    Il y a aussi une autre possibilité, si c'est seulement du travail pixel par pixel et sans affichage: taper dans le fichier image lui-même.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 072
    Points : 7 974
    Points
    7 974
    Par défaut
    Citation Envoyé par Franck.H Voir le message
    C'est vrai que la SDL est pas mal mais comme dit, n'utilise pas directement le GPU cela dit, on peut utiliser des buffer matériels si je me souviens bien
    Si tu parles de surface type SDL_HWSURFACE, je penses qu'il faut plutôt éviter dans certains cas (mais je ne retrouve plus mes sources qui datent de matuzalem).
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Pour travailler pixel par pixel, tu vas utiliser soit le CPU, soit le GPU (shaders) pour les calculs. En partant de là, la lib ne sert effectivement qu'a afficher l'image de travail et l'argument de l'accélération de la lib par le GPU ne change rien.

    Je te conseille d'écrire ton algo d'abord sur CPU (plus simple, mais moins performant), puis de le parallélisé sur GPU avec les shaders (nécessite de comprendre/apprendre la prog parallèle).

    Si tu fais que du CPU, choisit peut être la lib qui correspond "nativement" à ton langage : SDL pour le C et SFML pour le C++ (mais c'est vraiment qu'une question de goût)
    Si tu souhaites passer par les shaders, utilise une lib moderne. Donc SFML 2 qui vient de sortir (elle a la préférence des devs actuellement) ou la SDL 2 en cours de dev.
    Tu peux également utiliser directement OpenGL, ce qui te garantira une portabilité maximale (quelque soit la lib, voir quelque soit le langage)

    En complément, parce qu'il faut bien que je vende ma lib préféré, si tu souhaites utiliser les shaders, tu peux également tester Qt : il fournit les classes ShaderEffect qui permettent d'écrire directement les shaders, sans avoir à se préoccuper (trop) du reste. Voir la doc pour un exemple d'effet pixel par pixel en quelques lignes : http://doc-snapshot.qt-project.org/q...dereffect.html

    Bon courage

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 36
    Points : 22
    Points
    22
    Par défaut
    Merci à tous pour vos réponses très pertinentes !

    Au vu des informations que vous me donnez, je pense rester sur la SDL pour le moment, car j'y suis à l'aise. De plus, comme je travaille en pixel par pixel, je pense effectivement ne pas changer car :
    gbdivers : Pour travailler pixel par pixel, tu vas utiliser soit le CPU, soit le GPU (shaders) pour les calculs. En partant de là, la lib ne sert effectivement qu'a afficher l'image de travail et l'argument de l'accélération de la lib par le GPU ne change rien.
    Donc pour l'instant pas de changement, on verra plus tard...

    Merci encore pour toutes vos réponses, et je laisse le topic ouvert encore quelque temps si vous avez d'autres remarques à me faire...

  9. #9
    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 136
    Points
    10 136
    Par défaut
    Moi je te conseillerai , et je le conseil toujours a ceux qui débute sur cette lib qu'est la SDL , de faire de la basse résolution (surtout si tu bosse pixel par pixel) , pour certain c'est dur a comprendre mais afficher pixel par pixel ud 800x600x4 en 60 fps ça tue le CPU
    et ça pour un blit , je parle pas des autres blits qui seront assez conséquent pour une telle résolution.

    Le 320x240 c'est largement correct et toute les vielles console supportait largement ce type de résolution qui est en terme de calcul et très faible , faut vraiment être parano pour se soucier des performances pour une tel résolution x).
    Bon la résolution 640x480 est correct aussi (même si ça commence a flancher).

    Si tu veux grossir ta fenêtre faudra passer par opengl (vu que faire un grossissement coter CPU c'est lourd) , ou alors tu fais un mode fullscreen et tu te casse pas la tete.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 36
    Points : 22
    Points
    22
    Par défaut
    Bien compris !

    Mais existe t-il par curiosité de faire du fullsrcreen avec une résolution du type 640*480 ?

  11. #11
    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 136
    Points
    10 136
    Par défaut
    ben oui avec la SDL ça donne ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    screen = SDL_SetVideoMode(640,480,24,SDL_FULLSCREEN);
    Tu peux mettre d'autre option avec http://www.libsdl.org/docs/html/sdlsetvideomode.html

    J'ajoute que je travaille avec la SDL, avec laquelle je travaille bien, mais dont je peut facilement changer puisqu'elle ne me sers uniquement à gérer la fenêtre et la mise à jour de l'écran.
    Tu utilise donc pas SDL_Blitsurface donc ? pourquoi pas , pour ma part je pensais ne pas l'utiliser aussi ,mais c’était juste pour optimiser la mémoire/rendu 2D en utilisant le format pcx.

  12. #12
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Je squat un peu le sujet... Je travaille actuellement sur un petit moteur 2D qui permettra d'afficher une fenêtre, des fenêtres à l'intérieur des programmes avec boutons, cases à cocher et tout le tatouin sans compter un petit garbage collector assez archaïque pour le moment et aussi de quoi mettre en place les bases des jeux qui tournerons avec comme un petit ordonnanceur de tâches qui permettra de gérer l'affichage des différentes parties d'un jeu....

    Je connais la SDL et ses éventuelles lenteur étant donné que pour le moment elle n'utilise pas le GPU (la version 2.0 le fera ? et sera-t-elle compatible avec la 1.2 ?) mais je me demandais s'il n'était pas mieux d'utiliser quelque chose qui utilise le GPU comme OpenGL que au passage, je ne connais absolument pas du tout
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  13. #13
    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 136
    Points
    10 136
    Par défaut
    Tous dépend de ce que tu fais j'ai jamais eu de souci de performance avec la SDL , Du coup pour moi j’espère que la SDL restera purement CPU (ça a ces avantage et inconvénient) , le version 2.0 est sorti il me semble mais en version unstable , j’espère en tous cas que la version 2.0 est compatible ,sinon ben je resterais a la 1.2.
    Bref pour dire que moi si je fais un jeu 2D -> SDL.

    Après un HUD j'en ai déjà fait , ça prend pas énorme en CPU , mais bon ça dépend beaucoup de la résolution comme toujours.

    J'ai déjà fait de la 2D avec opengl ,oui niveau performance tu as moins de souci , après n’étant pas faite pour cela faut mieux coder quelque fonction 2D avec opengl pour en faire quelque chose.

    Donc pour te répondre tous dépend de ce que tu fais mais pour répondre si tu fais une résolution 320x240/640x480 SDL est suffisante , plus il faut utiliser opengl.

  14. #14
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Bin disons que c'est que pour du jeu 2D genre faire quelques remake d'anciens jeux (bubble bobble, tetris, arcanoid, etc...) d'époque ms-dos voir amiga ou de mon propre cru je ne pense pas dépasser du 640x480, un bon vieux 2D est plus joli légèrement pixelisé que trop lisse
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 36
    Points : 22
    Points
    22
    Par défaut
    Ok, merci à tous pour vos réponses, qui m'ont confirmé dans mon choix de garder la SDL.

    Au fait, j'utilise bien SDL_BlitSurface() mais ce n'est pas ce qui me bloquerai le plus si je devais changer de bibliothèque. Par contre pour les performances, il est possible que je l'utilise, ca j'ai de plus des blits avec canal alpha à faire... mais ils ne viendrons que plus tard, pour l'instant c'est le pixel par pixel qui m'intéresse.

  16. #16
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 072
    Points : 7 974
    Points
    7 974
    Par défaut
    Citation Envoyé par Franck.H Voir le message
    Je squat un peu le sujet... Je travaille actuellement sur un petit moteur 2D qui permettra d'afficher une fenêtre, des fenêtres à l'intérieur des programmes avec boutons, cases à cocher et tout le tatouin sans compter un petit garbage collector assez archaïque pour le moment et aussi de quoi mettre en place les bases des jeux qui tournerons avec comme un petit ordonnanceur de tâches qui permettra de gérer l'affichage des différentes parties d'un jeu....

    Je connais la SDL et ses éventuelles lenteur étant donné que pour le moment elle n'utilise pas le GPU (la version 2.0 le fera ? et sera-t-elle compatible avec la 1.2 ?) mais je me demandais s'il n'était pas mieux d'utiliser quelque chose qui utilise le GPU comme OpenGL que au passage, je ne connais absolument pas du tout
    Perso il y'a plus de 6 ans j'avais ecrit un petit moteur basé sur la SDL .
    Ce moteur permettre de créer des fenêtres avec des panel, contenant des composants etc avec un editeur visuel et tout... bref exactement ce que tu cherches. (J'en ai fait un synthetiseur modulaire appelé noobsynth (ici pour la référence et screenshots).

    Il était au départ en SDL "normale" mais je me suis rendu compte au fur et a mesure que c'était beaucoup trop lent.
    J'ai donc rajouter un support opengl (toujours avec la SDL) . Le rendu était équivalent sans changer le code utilisateur et donc la l'interface ne posait plus de problème des fluidités.

    Donc perso je pense que la SDL couplée opengl est un très bon choix. Evidement je ne travaillais pas au "pixel" près durant les affichages (et heureusement).

    J'ai presque terminer par avoir une sorte d'équivalent à Swing et j'étais extrêmement satisfait du résultat, je pouvais coder mes applications en l'utilisant facilement, rapidement.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  17. #17
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Ouais effectivement ca à l'air pas mal mais je compte faire le miens quand même vu que je veux un comportement spécifique et une bibliothèque scindée en plusieurs parties. La base primaire pourra même servir, un peu comme la GLib, à des programmes autres que des jeux car elle n'est pas en SDL.

    Je verrais bien au fil de l'avancement pour les performances
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

Discussions similaires

  1. recherche des algorythmes pour images 2d
    Par exxos dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 24/05/2002, 14h46
  2. recherches des cours ou des explications sur les algorithmes
    Par Marcus2211 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 19/05/2002, 23h18
  3. Réponses: 8
    Dernier message: 17/05/2002, 10h08
  4. [PRO*C] Recherche information
    Par Anonymous dans le forum Interfaces de programmation
    Réponses: 2
    Dernier message: 04/04/2002, 18h53
  5. Recherche de documentation complète en algorithmes
    Par Anonymous dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 29/03/2002, 13h09

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