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

OpenGL Discussion :

Migration vers OpenGL 3.x


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 034
    Billets dans le blog
    12
    Par défaut Migration vers OpenGL 3.x
    Bonjoir à vous.

    Je suis en train d'étudier la migration du code de mon moteur 3D de OpenGL 1.4+Shaders à OpenGL 3.x.
    Comme vous le remarquerez, il y a un monde entre les 2, notamment la suppression du pipeline fixe. Du coup j'ai quelques questions :
    - Vu que le calcul des transformations et translations ne se fait plus avec des glTranslate et glMultMatrix, il faut le faire à la main. Le mieux est-il de le faire au niveau GPU ou CPU ?
    - Pour les lumières, comment faut-il faire ? Auparavant on les créait en C++ et on utilisait glLightSources[i] dans les shaders pour récupérer leurs propriétés. Maintenant, où et comment doit-on les créer ? Comment les passer aux shaders ?
    - De même pour les materials et les textures ?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur 3D
    Inscrit en
    Avril 2008
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur 3D

    Informations forums :
    Inscription : Avril 2008
    Messages : 400
    Par défaut
    Pour les trasnformations, je sais pas trop ce qui est le mieux, mais moi je le fais sur CPU et envoi ensuite la matrice au shader.
    Pour les lumieres, tu fais absolument comme tu veux, vu que ca n'existe plus. Tu dois partir de 0 et te debrouiller au mieux. Un bon debut serait d'envoyer une position, une couleur et un range au shader.
    Pour les materiaux, c'est comme pour les lumieres, c'est a toi de tout faire. Bien entendu, les textures sont quand meme prises en compte, il suffit d'appliquer ta texture a un sampler (comme dans les anciennes versions, me semble-t'il) et ensuite d'envoyer le sampler au shader.

  3. #3
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 034
    Billets dans le blog
    12
    Par défaut
    Merci pour cette réponse. Je vais m'amuser, moi à garder le tout rétro-compatible ^^' (je veux garder la version OpenGL 1.4 sous le coude, sait-on jamais)
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  4. #4
    Membre chevronné
    Inscrit en
    Février 2008
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Février 2008
    Messages : 413
    Par défaut
    Bonjour,

    juste un petit conseil, si tu veux rester rétro compatible, le mieux est de créer des renderers spécifiques, OpenGL 1.4, OpenGl 2.1 et OpenGL 3.1, et de choisir le bon au lancement de ton programme. Si tu essaies d'avoir un seul renderer qui s'adapte au hardware disponible, ca va vite devenir ingérable...

  5. #5
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 034
    Billets dans le blog
    12
    Par défaut
    C'est ce que j'ai fait ^^.

    Je pense cependant ne pas garder de support sans shader, du coup je me demande si je ne vais pas de base passer en rendu tout shader, à la OpenGL 3.x, si tant est que OpenGL 2.x le permette.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  6. #6
    Membre très actif Avatar de oxyde356
    Homme Profil pro
    Ingénieur Recherche Imagerie
    Inscrit en
    Février 2006
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Recherche Imagerie

    Informations forums :
    Inscription : Février 2006
    Messages : 797
    Par défaut
    Opengl 2.x permet l'utilisation de shaders, et même de geometry shader avec une extention il me semble. Mais il te manquera pas mal d'outils bien pratique comme les uniform buffer object, les texture buffer object, le transform feedback etc mais bon tu n'as peut être pas besoin de tout ça si ton but est juste de faire évoluer le code en lui même.
    Alors pour les transformations tout dépend de ce que tu veux faire. En général on fera tout du coté CPU à moins que tu puisse faire un traitement de masse. Par exemple si tu dois gérer un système de particules il sera plus intéressant de passer la mise à jour de la position (et d'autres infos) par le vertex shader est d'utilisé le transform feedback. Mais sinon pour rester simple la mise à jour reste coté CPU tu envoie tes matrices au vertex shader, et c'est à lui de faire le reste.
    Pour les lumières tu créé tes propres structures (j'imagine que ça c'est déjà fait) et tu envoie tes données dans des variables uniform à tes shaders. Et après tu en fais ce que tu veux (ici un traitement impliquant les lumières ^^).
    Pour les materials et les textures encore pareil, uniform
    Mais pour généraliser les informations globales, comme les paramètres de scènes, les lumières etc... rien ne vaut les UBO (uniform buffer object) qui par contre ne sont disponibles que depuis GL3.x et qui te permettent de ne passer qu'une fois un tableau de données à tout un ensemble de shaders au lieu de repasser les données individuellement à chaque shader.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2D/3D] Migration vers Qt5 : OpenGL ne fonctionne plus
    Par zenux dans le forum Débuter
    Réponses: 0
    Dernier message: 05/03/2014, 20h51
  2. Migration vers Interbase
    Par mona dans le forum InterBase
    Réponses: 6
    Dernier message: 26/09/2005, 10h43
  3. Probleme de migration vers serveur dédié
    Par sylvain_neus dans le forum Hibernate
    Réponses: 13
    Dernier message: 23/04/2004, 08h51
  4. [Kylix] migration vers kylix
    Par zheng dans le forum EDI
    Réponses: 1
    Dernier message: 11/04/2004, 08h31
  5. [Tomcat] migration vers une version plus récente
    Par butcher dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 31/10/2003, 21h46

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