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 et OpenGL3.x


Sujet :

SFML

  1. #1
    Membre averti
    Homme Profil pro
    Game Graphics Programmer
    Inscrit en
    Août 2006
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Game Graphics Programmer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 408
    Points : 392
    Points
    392
    Par défaut SFML et OpenGL3.x
    Bonojur,
    je voulais savoir s'il est possible d'avoir un RenderContext valide pour GL3 en utilisant SFML.
    Sinon, à quel endroit dois-je modifier le code?

    En fait, c'est relativement d'obtenir un contexte valide sous SDL (GLUT, GLFW, ... pas encore essayés), mais j'aimerais utiliser SFML pour mon projet, d'où la question.

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    C'est implémenté depuis peu dans la branche SFML 2.0, que tu peux récupérer via SVN (ça ne marche que sous Windows pour l'instant).
    Si pour une raison quelconque tu ne peux pas, je te montrerai le code qu'il faut ajouter.

  3. #3
    Membre averti
    Homme Profil pro
    Game Graphics Programmer
    Inscrit en
    Août 2006
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Game Graphics Programmer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 408
    Points : 392
    Points
    392
    Par défaut
    Le code dont tu parles, c'est le code avec wglCreateContextAttribsARB(dc, attribs); ?
    Celui-là, je l'ai. (J'ai créé un petit bout de code pour contexte GL3 en utilisant SDL, ca n'a pas vraiment été un problème).

    Mais merci pour la réponse, je ferais un checkout ce soir.

    Sinon, est-ce que les fonctions GL3 sont disponibles à partir d'un en-tête chez toi ou est-ce que je dois me les initialiser moi-même (genre avec glew) ?

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Le code dont tu parles, c'est le code avec wglCreateContextAttribsARB(dc, attribs); ?
    Celui-là, je l'ai
    Alors impeccable, c'est tout ce qu'il faut.

    Sinon, est-ce que les fonctions GL3 sont disponibles à partir d'un en-tête chez toi ou est-ce que je dois me les initialiser moi-même (genre avec glew) ?
    SFML ne gère pas les extensions, il faut effectivement utiliser GLEW.

  5. #5
    Membre averti
    Homme Profil pro
    Game Graphics Programmer
    Inscrit en
    Août 2006
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Game Graphics Programmer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 408
    Points : 392
    Points
    392
    Par défaut
    tiens, j'ai remarqué que ton contexte GL n'est pas "forward compatible", c'est-à-dire, sans les fonctions obsolètes. Je me doute que tu t'en sers pour SFML et que ca va pas être enlevé sous peu, si?

    Sinon, tu saurais pas s'il y a un header ne contenant plus que les fonctions GL3, histoire qu'utiliser des fonctions obsolètes me donne des erreurs de compilation et non pas des mauvaises surprises dans qqs mois quand la cmopatibilité sera effectivement brisée par le driver?

    (Je sais que je peux m'en construire un tout seul, soit en utilisant le make custom de glew, soit en y allant à la main, mais c'est prenant de temps et de tête que de chercher ces fonctions ou extensions...)

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    tiens, j'ai remarqué que ton contexte GL n'est pas "forward compatible", c'est-à-dire, sans les fonctions obsolètes. Je me doute que tu t'en sers pour SFML et que ca va pas être enlevé sous peu, si?
    J'ai pas compris

    Sinon, tu saurais pas s'il y a un header ne contenant plus que les fonctions GL3, histoire qu'utiliser des fonctions obsolètes me donne des erreurs de compilation et non pas des mauvaises surprises dans qqs mois quand la cmopatibilité sera effectivement brisée par le driver?
    Non, sorry.

  7. #7
    Membre averti
    Homme Profil pro
    Game Graphics Programmer
    Inscrit en
    Août 2006
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Game Graphics Programmer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 408
    Points : 392
    Points
    392
    Par défaut
    C'est ce que je voulais dire, c'est que ton contexte GL n'est pas celui qui supprime les fonctions obsolètes (faut passer 2 autres paramètres à wglCreateContextAttribsARB() pour cela*).

    Et je pense que tu utilises des fonctionalités niveau GL1.x ou 2.x pour SFML, notamment pour l'interface utilisateur et tout ca. Donc, utiliser un contexte 3.x pur pourrait peut-être te poser problème.


    * et prier pour que le driver enlève effectivement ces fonctions (ce qui n'est pas encore le cas chez nVidia).

  8. #8
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Ok je vois, merci pour l'info. Tant que je ne me serai pas débarassé des fonctions obsolètes il faudra donc que j'évite de laisser la possibilité de créer des contextes 3.0 purs.

  9. #9
    Membre averti
    Homme Profil pro
    Game Graphics Programmer
    Inscrit en
    Août 2006
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Game Graphics Programmer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 408
    Points : 392
    Points
    392
    Par défaut
    Oui, enfin ca fonctionnera quand même si tu mets le "forward compatible bit" pour l'instant, mais uniquement jusqu'à ce que NV corrige ce bug.

    -> http://www.gamedev.net/community/for...opic_id=512890
    (ma source)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    {
    WGL_CONTEXT_MAJOR_VERSION_ARB, 3,
    WGL_CONTEXT_MINOR_VERSION_ARB, 0, //peut être 1 aussi, ca ne change rien
    WGL_CONTEXT_FLAGS_ARB, WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB, //ce bit est important pour enlever la foncitonalité obsolète
    0 //fin de liste
    };
    Voilà.
    En fait, je ne sais pas comment tu dessines les rectangles de l'interface (pour les sprites, tout ca), mais je suppose que tu utilises la facon la plus facile: le pipeline fixe de l'openGL classique. Or cette fonctionalité est celle qui jarte(ra à un moment ou autre de facon définitive), d'où le problème.

    Tu pourrais aussi me rassurer et dire que SFML est entièrement GL 2.1, auquel cas porter vers 3.x ne sera pas trop difficile.

    Enfin, si je dis ca, c'est parce que je suis en train de créer mon petit moteur GL 3.x pur et que j'aimerais avoir des erreurs à la compilation et non à l'execution si j'utilise des choses obsolètes...

  10. #10
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    SFML utilise les fonctions les plus au ras des paquerettes d'OpenGL 1.x : le rendu immédiat (glBegin / glVertex / glEnd). Ca peut paraître idiot, mais c'est ce qu'il y a de mieux pour du rendu de quad complétement dissocié (i.e. pas de batching).

    Enfin bon un de ces jours il faudra que je fasse évoluer le code de rendu, pas le choix.

  11. #11
    Membre averti
    Homme Profil pro
    Game Graphics Programmer
    Inscrit en
    Août 2006
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Game Graphics Programmer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 408
    Points : 392
    Points
    392
    Par défaut
    Je m'en doutais. C'est pour ca que SFML est portable vers GL ES 1.1 (iPhone).
    Du coup, si j'utilise un contexte "exclusif" GL 3.x, ca risquera de briser un peu tout l'appli, non?

  12. #12
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Je ne me suis pas trop penché sur le sujet, mais vu ce que tu dis il y a des chances oui. De toute façon la prochaine grosse étape après SFML 2.0 sera certainement une refonte totale du code de rendu, afin d'être compatible avec tous les back-end OpenGL à la mode (GL ES 2.x, GL 3.x, ...).

  13. #13
    Membre averti
    Homme Profil pro
    Game Graphics Programmer
    Inscrit en
    Août 2006
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Game Graphics Programmer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 408
    Points : 392
    Points
    392
    Par défaut
    Tu vas t'amuser avec les différentes spec des shaders (GLSL 1.20 différent de 1.30 différent de 1.40).
    Je te conseille de viser la compatibilité avec GL3.0, vu que GL ES 2.0 et ES 3.0 (prevu pour 2010) suivent la même route (avec juste quelques fonctions en moins, je crois).
    Puis... iPhone HD, Palm Pre, ya pas mal de plateformes pour ES 2.0 en perspective..

  14. #14
    Nouveau membre du Club

    Inscrit en
    Février 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 14
    Points : 25
    Points
    25
    Par défaut
    Bonjour Laurent , tout d'abord permet moi de te félicité pour cette librairie.
    je développe en amateur sous Linux , et dernièrement je m'intéresse à l' OpenGL 3 de très près , n'ayant ni l'envie ni le temps de manipulé X11 pour avoir un contexte OpenGL 3 , je voulais savoir se qu'il en était de la version 2.0 pour Linux.


    Merci.

  15. #15
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    La gestion des contextes OpenGL 3.0 n'est toujours pas implémentée sous Linux, mais ça peut se faire rapidement. Il faut juste que je trouve comment faire (ça ne devrait pas être très différent de la version Windows)

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 35
    Points : 38
    Points
    38
    Par défaut SFML 2.0 officiel
    Bonjour monsieur Gomila. Savez-vous quand sera disponible la version officielle de SFML 2.0 (la version actuelle est 1.5 je crois...). Conservera-t-elle la possibilité de créer un contexte OpenGL 3.x. Il me semble qu'actuellement, la version SVN crée automatiquement un contexte OpenGL 3.0 (si les drivers le permettent évidemment). C'est bien parce que c'est transparent pour l'utilisateur, mais ne serait-il pas possible de proposer un argument optionnel (ou pas optionnel d'ailleurs, j'en sais rien!...) afin de choisir la version du contexte OpenGL créé.

  17. #17
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    La gestion des contextes OpenGL 3.0 n'est toujours pas implémentée sous Linux, mais ça peut se faire rapidement
    Bon ben en fait voilà, c'est fait (dans la branche sfml2). Si tu as l'occasion de tester n'hésite pas, car chez moi je ne peux pas le faire

    Savez-vous quand sera disponible la version officielle de SFML 2.0
    Non, mais c'est pas encore pour tout de suite

    Conservera-t-elle la possibilité de créer un contexte OpenGL 3.x
    Il n'y a que dans SFML 2 que tu peux créer un contexte 3.0. Les versions 1.x ne le feront jamais.

    Il me semble qu'actuellement, la version SVN crée automatiquement un contexte OpenGL 3.0 (si les drivers le permettent évidemment). C'est bien parce que c'est transparent pour l'utilisateur, mais ne serait-il pas possible de proposer un argument optionnel (ou pas optionnel d'ailleurs, j'en sais rien!...) afin de choisir la version du contexte OpenGL créé
    Ca peut se faire oui. Il faudrait d'abord voir quel intérêt cela aurait. Etant donné que je crée des contextes compatibles avec OpenGL < 3.0, ça n'a normalement aucun effet de bord.

  18. #18
    Nouveau membre du Club

    Inscrit en
    Février 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 14
    Points : 25
    Points
    25
    Par défaut
    Merci pour ces réponses.
    Je tâtonne la SFML depuis 2 / 3 jours , c'est super.
    étant aussi utilisateur du Purebasic je pense faire un binding de la librairie , cela intéressera certainement cette petite équipe qui produit pas mal de petit jeu : BGames
    Mais avant de me lancer dedans , est ce que la SFML 2.0 va connaître une refonte au point de supprimer ou de renommé des fonctions déjà existante ?

  19. #19
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Mais avant de me lancer dedans , est ce que la SFML 2.0 va connaître une refonte au point de supprimer ou de renommé des fonctions déjà existante ?
    Oui, malheureusement. Il est donc hasardeux de commencer un binding tout de suite, à moins que tu ne suives les modifications au fur et à mesure.

  20. #20
    Nouveau membre du Club

    Inscrit en
    Février 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 14
    Points : 25
    Points
    25
    Par défaut
    Merci Laurent , je vais attendre patiemment la 2.0.
    j'espère que cette lib va prendre de plus en plus d'ampleur !

Discussions similaires

  1. SFML - Bibliothèque multimédia multiplateforme open-source
    Par Laurent Gomila dans le forum SFML
    Réponses: 160
    Dernier message: 04/05/2009, 23h01
  2. Réponses: 2
    Dernier message: 16/11/2007, 17h54
  3. Réponses: 5
    Dernier message: 15/10/2007, 07h43
  4. [SFML] Compilation avec VC express sur Vista
    Par tomu dans le forum SFML
    Réponses: 5
    Dernier message: 01/09/2007, 09h18
  5. [SFML] Image double free or corruption
    Par Belegkarnil dans le forum SFML
    Réponses: 4
    Dernier message: 23/08/2007, 16h56

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