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

SFML Discussion :

SFML par rapport à SDL


Sujet :

SFML

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 17
    Points : 8
    Points
    8
    Par défaut SFML par rapport à SDL
    Bonjour,

    J'ai réalisé un programme récemment de fenêtrage avec la SDL. En gros je génère des images intermédiaires que je rempli d'éléments (inputs, checkboxes, etc). Je blit ensuite ces images à l'écran et les fenêtres apparaissent.

    Mon projet est devenu assez gros et j'ai eu envie de le restructurer entièrement et de mieux utiliser l'héritage, etc... Et je me suis dit que pourquoi pas je changerais de librairie d'affichage, car la SDL est assez lente. Je me suis donc tourné vers SFML.

    Avec SFML, si j'ai bien compris, je ne pourrais pas faire de rendu intermédiaires dans des surfaces. Je devrais donc tout dessiner sur l'écran. Normalement ça ne pose pas de problème mais ici dans le cas des fenêtres, il y a un pb :
    Imaginons que je déclare une surface de 200x200 pixels pour une fenêtre. Si je blit un input (par exemple) aux coordonnées 150, 100 et que l'input fait 200 de long, il apparait alors coupé (ce qui me permet ensuite de gérer le scrolling a l'intérieur de la fenêtre). Avec la SFML, cette situation n'arrivera jamais (ou alors je me trompe ?). Il faudra donc que je gère les coupures des sprites pour que tout rentre correctement dans mes fenêtres ?!
    C'est quand même un gros problème pour une application comme la mienne.

    J'hésite encore à passer a SFML (qui a l'air vraiment d'être la librairie parfaite pour de la 2D, mais malheureusement sans rendu intermédiaire possible xD). D'après vous, devrais-je rester avec la SDL que je connais bien ? Est-ce que je dit des conneries ?

    Et sinon, j'ai une autre question qui paraîtra peut-être complètement débile : Peut-on rendre à la fois de la 2D et de la 3D avec SFML ? Par exemple pourrais-je afficher un objet 3D dans une de mes fenêtres ?

    Merci d'avance,
    paps

  2. #2
    Expert éminent
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Points : 6 812
    Points
    6 812
    Mes Tutos DirectX, OpenGL, 3D : http://raptor.developpez.com/

  3. #3
    Membre habitué Avatar de Polyfructol
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Avril 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Avril 2007
    Messages : 131
    Points : 157
    Points
    157
    Par défaut
    Il est vrai qu'avec la SFML tu ne peux pas utiliser de "surface intermédiaire", mais je crois que c'est prévu !

    Sinon (avis perso), je pense que ni SDL ni SFML ne sont prévues pour faire des interfaces graphiques avancées, mieux vaut utiliser les libraires de fenêtrage classiques. (Qt, wxWidgets ...)

    Mais quel est le but de ton projet précisement ?

    Citation Envoyé par paps`
    Et sinon, j'ai une autre question qui paraîtra peut-être complètement débile : Peut-on rendre à la fois de la 2D et de la 3D avec SFML ? Par exemple pourrais-je afficher un objet 3D dans une de mes fenêtres ?
    Oui et de la même façon qu'avec SDL.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    Mon projet n'a pas de but particulier. J'avais juste envie de coder une interface moi même. Ça me permet de vraiment la gérer comme je veut.

    Mais la n'est pas la question

    Existe-t-il une manière simple et efficace de simuler une surface intermédiaire ? Ou je vais vraiment devoir couper les sprites de façon à obtenir une surface rectangulaire représentant une fenêtre de mon interface ?

    Si la fonctionnalité est prévue... quelqu'un sait quand est-ce qu'elle va être disponible ?

    Merci d'avance
    paps

  5. #5
    Membre habitué Avatar de Polyfructol
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Avril 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Avril 2007
    Messages : 131
    Points : 157
    Points
    157
    Par défaut
    J'ai l'impression qu'il y a exactement ce que tu cherches sur le forum de la bibliothèque : [Ok] Draw dans un objet intermédiaire puis dans la fenêtre

  6. #6
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    la sfml se base sur opengl, tu peux donc utiliser des surfaces intermédiaires sans problème si ce n'est un risque de baisse de performances
    si tu as accès aux FBO, ça ne devrait pas te pénaliser énormément

    je pense de toute façon que tu vas devoir repenser pas mal de choses dans ton appli pour basculer sur la sfml

    et si c'est pour faire une gui, je pense que tu dois changer ta philosophie, tu ne dois pas tout dessiner pixel par pixel mais utiliser géométries et textures en te basant sur opengl puisque, comme je l'ai déjà rappelé, la sfml est basée dessus

    dernière chose, pour limiter un affichage avec la sfml, par exemple le contenu d'une fenêtre d'une gui, il y a glScissor
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    Donc en gros c'est mort pour transférer mon interface vers OpenGL ?

    La SDL avec son système de surfaces et de blittage est unique comme librairie ou bien c'est tout simplement OpenGL qui ne permet pas du tout cela ?
    C'est quand même important pour n'importe quel programme 2D de pouvoir dessiner dans une surface dans la mémoire pour ensuite l'utiliser plus tard ou plusieurs fois de suite... ça me paraît être indispensable...
    Je me demande donc comment sont fait les programmes 2D en OpenGL, parce que finalement, sans la possibilité de générer une texture intermédiaire qui contiendrais un contenu créé par l'application elle-même, cela devient difficile...
    glScissor pourrait être utile, mais encore une fois cela ne permet pas de vraiment dessiner dans une partie de la mémoire (et non sur l'écran), dans le but de ré-utiliser l'image générée plusieurs fois.


    Citation Envoyé par Polyfructol Voir le message
    J'ai l'impression qu'il y a exactement ce que tu cherches sur le forum de la bibliothèque : [Ok] Draw dans un objet intermédiaire puis dans la fenêtre
    Non, ceci permet de "grouper" des images pour appliquer des transformations sur elles en une seule fois, et ce n'est en aucun cas un dessin dans la mémoire.


    Merci d'avance pour vos réponses =)

  8. #8
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    Citation Envoyé par paps` Voir le message
    Donc en gros c'est mort pour transférer mon interface vers OpenGL ?
    non mais il y a du boulot

    Citation Envoyé par paps` Voir le message
    La SDL avec son système de surfaces et de blittage est unique comme librairie ou bien c'est tout simplement OpenGL qui ne permet pas du tout cela ?
    SDL est de "la vieille école"
    travail "pixel par pixel"

    Citation Envoyé par paps` Voir le message
    C'est quand même important pour n'importe quel programme 2D de pouvoir dessiner dans une surface dans la mémoire pour ensuite l'utiliser plus tard ou plusieurs fois de suite... ça me paraît être indispensable...
    Je me demande donc comment sont fait les programmes 2D en OpenGL, parce que finalement, sans la possibilité de générer une texture intermédiaire qui contiendrais un contenu créé par l'application elle-même, cela devient difficile...
    tu ne redessine pas tes sprites à chaque image
    tu les charge une fois dans une texture et tu dessines un quad texturé n fois

    dans le cas d'une GUI, comme je te l'ai dit, avec OpenGL tu travailles sur de la géométrie, pas pixel par pixel
    si tu veux utiliser le hardware tu ne travaille pas pixel par pixel

    Citation Envoyé par paps` Voir le message
    glScissor pourrait être utile, mais encore une fois cela ne permet pas de vraiment dessiner dans une partie de la mémoire (et non sur l'écran), dans le but de ré-utiliser l'image générée plusieurs fois.
    ce n'est pas le but
    glScissor te permet de mettre un masque sur les zones de l'écran que tu veux préserver

    donc au final, une GUI opengl comparée à une GUI SDL où tu travailels pixel par pixel,la phylosophie de conception est totalement différente
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

Discussions similaires

  1. Quel avenir du C++ par rapport au C# ou à Java ?
    Par phpdev dans le forum Débats sur le développement - Le Best Of
    Réponses: 209
    Dernier message: 09/11/2009, 02h25
  2. Supprimer un fichier par rapport a une date
    Par NewB dans le forum Linux
    Réponses: 2
    Dernier message: 25/06/2003, 13h44
  3. [MATH] Point par rapport à une droite
    Par teska dans le forum Mathématiques
    Réponses: 6
    Dernier message: 14/05/2003, 16h11
  4. Les possibilité que C++ offre par rapport à Pascal Objet
    Par Riko dans le forum Langages de programmation
    Réponses: 13
    Dernier message: 01/02/2003, 21h38
  5. [Choix] Quelles attentes par rapport aux SGBD ?
    Par thierry34 dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 13/07/2002, 20h08

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