Précédent   Forum des professionnels en informatique > Applications > Développement 2D, 3D et Jeux > API graphiques > OpenGL
OpenGL Forum d'entraide sur le développement en OpenGL. Avant de poster -> FAQ OpenGL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/01/2012, 11h29   #1
Membre actif
 
Avatar de Robxley
 
Homme Alexis CAILLY
Doctorant
Inscription : mai 2009
Messages : 155
Détails du profil
Informations personnelles :
Nom : Homme Alexis CAILLY
Âge : 26
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Doctorant

Informations forums :
Inscription : mai 2009
Messages : 155
Points : 186
Points : 186
Par défaut être ou ne pas être-Déprécié.

Bonjour à tous,

Avec les nouvelles spécifications de Opengl (et GLSL ) beaucoup d'anciennes fonctions sont devenues dépréciées (glVertex, gl*Matrix...). Je souhaite mettre à jour mes travaux en respectant les nouvelles spécifications et donc éviter d'utiliser toutes fonctions dépréciées bien évidemment.

J'ai repris récemment mon programme basé sur les lib SDL/glew (bien évidemment version pour opengl 3.x+, soit SDL 1.3beta et glew 1.7.0) sous l'IDE VS C++ 2010 express.

Or, je viens de constater que lors de la compilation de mon projet aucun warning/error n'est indiqué lors de la compilation et cela en présence de fonctions dépréciées mises volontairement pour le test.

J'aimerai savoir s'il était possible de voir lors de la compilation des warnings/errors sur les fonctions dépréciées. Les vielles habitudes ont leurs automatismes et je dois dire que je n'ai pas toutes les nouvelles spécifications en tête. Il serait donc important d'avoir un retour lors de la compilation dans le cas d'un emploi de fonctions dépréciées.

J'ai vu que sous linux avec l'utilisation de gl3.h et certain #define il était possible d'obtenir ce genre d'info lors de la compilation, ce que ne semble pas permettre glew.h.

J'ai cherché sur le net pour mon cas mais je n'ai rien trouvé. Si quelqu'un a quelques infos je suis preneur.
__________________
Rien ne sert de courir, mieux vaut partir à point. Programmer aussi d'ailleurs.
Surtout, mais surtout pas d’astuces !
Pas de bras, pas de chocolat. Les deux mains sur le clavier.
Robxley est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 12h31   #2
Membre éprouvé
 
Inscription : février 2008
Messages : 407
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : février 2008
Messages : 407
Points : 422
Points : 422
Bonjour,

je ne sais pas comment afficher ces infos à la compilation, mais gDebugger vous permet de detecter les appels aux fonctions dépréciées pendant l'execution il me semble, vous pouvez commencer par ca...
ShevchenKik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 14h42   #3
Membre actif
 
Avatar de Robxley
 
Homme Alexis CAILLY
Doctorant
Inscription : mai 2009
Messages : 155
Détails du profil
Informations personnelles :
Nom : Homme Alexis CAILLY
Âge : 26
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Doctorant

Informations forums :
Inscription : mai 2009
Messages : 155
Points : 186
Points : 186
Je viens de tester aussi que lors que j'utilise des fonctions dépréciées dans la version opengl utilisée (3.2 spécifié dans notre programme) lors de l’exécution il y a une erreur adresse 0x00000 mémoire sur la fonction en question :

exemple :

sous SDL pour la version d'opengl que l'on souhaite utiliser il faut d’éclater :
Code :
1
2
3
 
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
pour la version 3.2 par exemple.
Et tous fonctions dépréciées des versions précédentes génèrent une erreur adresse 0 lors de l’exécution. On peut utiliser le debuggeur pas par pas et erreur par erreur pour marquer un arrêt sur ces fonctions dépréciées, mais c'est lourd et ça demande de recompiler à chaque modification......

Je vais regarder du coté de gDebugger, mais gDebugger n'est pas optimal non plus je pense pour trouver les lignes des fct dépréciées etc....
__________________
Rien ne sert de courir, mieux vaut partir à point. Programmer aussi d'ailleurs.
Surtout, mais surtout pas d’astuces !
Pas de bras, pas de chocolat. Les deux mains sur le clavier.
Robxley est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 15h36   #4
Membre du Club
 
Avatar de Hijack
 
Homme Yohann
Étudiant
Inscription : novembre 2011
Messages : 28
Détails du profil
Informations personnelles :
Nom : Homme Yohann
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

Informations forums :
Inscription : novembre 2011
Messages : 28
Points : 50
Points : 50
Salut Robxley,

normalement (je dis bien normalement) les fonctions dépréciées devraient être affiché à la compilation à condition qu'elles aient été marqué comme "deprecated" par leur auteur... Ce marquage s'effectue directement dans le code.

De plus, l'intellisense de VS devraient te signaler les fonctions dépréciées...

S'ils ne le fait pas, c'est que :
-Les developpeur de opengl n'ont pas marqué leur fonction comme "deprecated" (Cela m'étonnerait quand même...)
- Tu as réussit à désactiver le marquage des fonctions dépréciées (et alors là, bravo )
- L'intellisense de VS merdouille un peu (Si on ne peut plus lui faire confiance... )

En tout cas le mieux c'est de lire les nouvelles spécifications Et d'essayer de les retenir (plus facile à dire, qu'à faire )
Hijack est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 16h09   #5
Responsable C++
 
Homme Guillaume Belz
Biochimiste
Inscription : novembre 2008
Messages : 2 904
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Belz
Âge : 36
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Biochimiste
Secteur : Santé

Informations forums :
Inscription : novembre 2008
Messages : 2 904
Points : 13 010
Points : 13 010
Effectivement, GLEW déclare les fonctions pour le Core Profile et le Compatibility Profile et ne teste donc pas les fonctions dépréciées. Elles génèrent simplement une erreur au runtime.
Tu peux avoir la liste des fonctions dépréciées dans les spécifications d'OpenGL, annexe E.2.2

Sinon tu peux utiliser GL3W (qui ne charge pas les fonctions, donc teste la compatibilité avec GL3W puis utilise GLEW). GL3W est un équivalent de GLEW mais uniquement pour le Core Profile 3.x/4.x
__________________
Vous souhaitez rejoindre l'équipe de bénévoles qui fait vivre Developpez (traduction, rédaction, modération) ? Contactez moi par MP.

Ma page personnelle avec la liste de mes articles - Mon blog sur la programmation des GPU.

Je suis régulièrement sur le chat pour les questions C++/Qt.
gbdivers est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 17h20   #6
Membre actif
 
Avatar de Robxley
 
Homme Alexis CAILLY
Doctorant
Inscription : mai 2009
Messages : 155
Détails du profil
Informations personnelles :
Nom : Homme Alexis CAILLY
Âge : 26
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Doctorant

Informations forums :
Inscription : mai 2009
Messages : 155
Points : 186
Points : 186
Merci pour vos réponses,

@Hijack, j'ai rien touché et je reste généralement gentil avec l'intellisense de VS, il risque de m'emmerdait plus quoi moi je l'emmerde s'il marche plus, donc je reste gentil avec
Effectivement, GLEW ne spécifie pas les fonctions dépréciées comme le fait remarquer d'ailleurs gbdivers


@gbdivers,
Je connais pas GL3W, je vais aller voir ça plus en détail.
__________________
Rien ne sert de courir, mieux vaut partir à point. Programmer aussi d'ailleurs.
Surtout, mais surtout pas d’astuces !
Pas de bras, pas de chocolat. Les deux mains sur le clavier.
Robxley est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 00h33   #7
Responsable 2D/3D/Jeux

 
Avatar de LittleWhite
 
Homme Alexandre Laurent
Étudiant
Inscription : mai 2008
Messages : 6 567
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Laurent
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2008
Messages : 6 567
Points : 14 051
Points : 14 051
Bonjour,

Il est peut être possible d'utiliser l'entête proposé sur le site -> http://www.opengl.org/registry/ (gl3.h). C'est un fichier d'entête avec juste les fonctions du Core.
Par contre, toujours est il que le sous Windows, l'interface des pilotes étant toujours en OpenGL 1.1, il est nécessaire d'utiliser GLEW qui cache donc les dépréciations.
Je proposerai donc, pour les tests, de lancer le programme sous un Linux avec les pilotes NVidia à jour et sans GLEW afin d'avoir les erreurs de compilation attendues.

Sinon, il y a peut être aussi un flag de compilation pour GLEW afin de virer tout ce qui est déprécié.
__________________
Vous souhaitez participer à la section Jeux ? Contactez-moi
La rubrique a aussi un blog !

Ma page sur DVP
Mon Portfolio

Qui connaît l'erreur, connaît la solution.
LittleWhite est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 27/01/2012, 10h00   #8
Membre actif
 
Avatar de Robxley
 
Homme Alexis CAILLY
Doctorant
Inscription : mai 2009
Messages : 155
Détails du profil
Informations personnelles :
Nom : Homme Alexis CAILLY
Âge : 26
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Doctorant

Informations forums :
Inscription : mai 2009
Messages : 155
Points : 186
Points : 186
@LittleWhite,

ce que je pensais faire d'autant plus que mon programme été prévu pour du multi-plateforme notamment par le choix des lib, mais je dois dire que je m'y étais pas plus penché dessus, c'est peut être l'occasion....
Enfin en tout cas je testerais ça sous cygwin. Si non j'avais déjà regardé du coté de glew s'il n'y avait pas un flag pour afficher les fonctions dépréciées utilisées mais je n'ai rien trouvé.
__________________
Rien ne sert de courir, mieux vaut partir à point. Programmer aussi d'ailleurs.
Surtout, mais surtout pas d’astuces !
Pas de bras, pas de chocolat. Les deux mains sur le clavier.
Robxley est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 12h31   #9
Responsable C++
 
Homme Guillaume Belz
Biochimiste
Inscription : novembre 2008
Messages : 2 904
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Belz
Âge : 36
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Biochimiste
Secteur : Santé

Informations forums :
Inscription : novembre 2008
Messages : 2 904
Points : 13 010
Points : 13 010
Ta problématique est intéressante. Je suis moi même confronté à ce problème régulièrement.
J'ai testé une approche différente. J'ai comparé les fichiers glew.h et gl3.h pour extraire les fonctions et définitions qui n'étaient que dans glew.h (donc normalement les fonctions dépréciées) et je les ai mis dans un fichier texte (pièce jointe). Comme ça, on peut utiliser un logiciel d'analyse statique du code (KWStyle par exemple, je n'ai pas trouvé comment ajouter une backlist dans cppcheck) qui va rechercher la présence de ces fonctions.
Il faudrait probablement vérifier le fichier manuellement mais c'est un début.

EDIT: Voilà ce que ça donne par exemple sur la lesson 17 de NeHe. Les warnings de blacklistage correspondent aux code BLK de la colonne 2 (lignes en gris)
Code :
KWStyle Lesson17.cpp -lesshtml -html test -b gl_deprecated.txt
Images attachées
Type de fichier : png capture.png (94,6 Ko, 12 affichages)
Fichiers attachés
Type de fichier : zip gl_deprecated.zip (25,4 Ko, 0 affichages)
__________________
Vous souhaitez rejoindre l'équipe de bénévoles qui fait vivre Developpez (traduction, rédaction, modération) ? Contactez moi par MP.

Ma page personnelle avec la liste de mes articles - Mon blog sur la programmation des GPU.

Je suis régulièrement sur le chat pour les questions C++/Qt.
gbdivers est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 15h24   #10
Membre actif
 
Avatar de Robxley
 
Homme Alexis CAILLY
Doctorant
Inscription : mai 2009
Messages : 155
Détails du profil
Informations personnelles :
Nom : Homme Alexis CAILLY
Âge : 26
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Doctorant

Informations forums :
Inscription : mai 2009
Messages : 155
Points : 186
Points : 186
@gbdivers,
Dans le cas de Windows, j'ai opté pour gl3w.h (en débug) (comme vous avec pu me le signaler dans un message précédent). Avec gl3w, on obtient bien un msg d'erreur lors de la compilation avec les fonctions dépréciées qui ne sont pas définies dans gl3.h. J'ai tout de même gardé glew.h pour le mode release.

Après sous linux (cygwin), le fichier gl3.h étant suffisant, le problème ne se pose donc pas.
__________________
Rien ne sert de courir, mieux vaut partir à point. Programmer aussi d'ailleurs.
Surtout, mais surtout pas d’astuces !
Pas de bras, pas de chocolat. Les deux mains sur le clavier.
Robxley est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h59.


 
 
 
 
Partenaires

Hébergement Web