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 :

Gérer les extensions


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Par défaut Gérer les extensions
    Bonsoir,

    Je me remets tout doucement à OpenGL et je me pose une question sur comment organiser de manière claire la gestion des extensions. Je voudrais savoir comment vous faites, si vous utilisez les instructions préprocesseurs et la compilation conditionnelle, donc quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (version == 1.4)
       #define VERSION14
    et ensuite dès qu'un choix s'impose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #ifdef VERSION14
       std::cout << "on est en version 1.4";
    #endif
     
    #ifdef VERSION15
       std::cout << "on est en version 1.5";
    #endif
    Ou soit vous utilisiez d'autres techniques (avec des booléens par exemple, ou peut-être une technique plus "C++" avec des templates par exemple, même si je vois pas du tout où ça pourrait nous servrir ici, mais certains font des choses qu'on imagine même pas possible avec les templates ^^), et si possible les avantages et inconvénients de chaque méthode.

    merci

  2. #2
    Membre émérite
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Par défaut
    Salut,

    Je ne sais pas si j'ai bien compris, mais pour les extensions, c'est pas mieux GLEW?

  3. #3
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Par défaut
    Ce n'est pas ça que je veux dire. Une fois que tu as chargé des extensions, par exemple les VBO on été introduit dans la version 1.5 il me semble (ou 1.4, enfin peu importe). Et je demande en fait les techniques de chacun pour gérer ça, par exemple si une personne a une carte plus ancienne qui ne gérera pas cette extension, pour lui faire utiliser les vertex array par exemple.

    Pour l'instant, j'ai pensé à ça :

    A l'inintialisation, on récupère la version d'OpenGL et toutes les extensions supportées par la carte graphique, donc ça nous donnerai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #define VERSION15
    #define ARB_vertex_buffer_object
    Puis dans le code quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #if defined (VERSION15) && defined (ARB_vertex_buffer_object)
    	std::cout << "version 1.5 + vbo";
    #endif
     
    #if defined (VERSION14)
    	std::cout << "version 1.4, on utilise les vertex array
    #endif
    Ou plutôt utiliser des booléens (par exemple if (version == 14 && isSupported (ARB_vertex_buffer_object))...

  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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Moi je m'embête pas : j'utilise GLEW, et lorsque je dois savoir si une extension existe ou non, il y a la fonction qui va bien (glewIsSupported).

    De toute façon, tu ne peux pas déterminer les extensions supportées avec des macros, puisque tu ne peux les récupérer que dynamiquement.

  5. #5
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Par défaut
    Merci de la réponse.

Discussions similaires

  1. [Chrome extension] Gérer les prompts
    Par link_915 dans le forum Google Chrome
    Réponses: 0
    Dernier message: 22/11/2011, 15h23
  2. [D5][SQL Server] Conserver des images dans la BDD
    Par FONKOU dans le forum Bases de données
    Réponses: 8
    Dernier message: 08/06/2008, 19h58
  3. Gérer les clics sur les boutons
    Par cyberlewis dans le forum Windows
    Réponses: 4
    Dernier message: 08/02/2004, 15h34
  4. Comment gérer les espaces blancs?
    Par Lambo dans le forum XML/XSL et SOAP
    Réponses: 10
    Dernier message: 16/05/2003, 09h44
  5. gérer les jpg dans une fenetre directdraw???
    Par Anonymous dans le forum DirectX
    Réponses: 1
    Dernier message: 14/06/2002, 13h39

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