Bonjour,
J'aimerais savoir où, comment et dans quels domaines on utilise l'OPENGL (à part les jeux vidéos bien sûr) !?
Bonjour,
J'aimerais savoir où, comment et dans quels domaines on utilise l'OPENGL (à part les jeux vidéos bien sûr) !?
OpenGL sert a tous les domaines de l'infographie : architecture, recherche (modelisation anatomique ou moleculaire), conception de voitures, avions....A partir du moment ou tu as besoin de visualiser quelque chose, bien souvent on a recours a cette bibliotheque.
Ou ? Dans toutes les entreprises ou labos publics et prives.
Comment ? En programmant des applis basees sur OpenGL.
@++
GLDavid
Consultez la FAQ Perl ainsi que mes cours de Perl.
N'oubliez pas les balises code :tagcode: ni le tag :resolu:
Je ne répond à aucune question technique par MP.
Je rajouterai que OpenGL est une librairie de Silicon Graphics ( http://www.sgi.com/software/opengl/ ) totalement portable mais réalisée au départ pour ses supercalculateur 64 bits. Elle est ainsi utilisée pour pouvoir visualiser des modéles de trés hautes définitions trés utiles dans l'aérospatiale, le contrôle de qualité automobile, ou les domaines du biomédical par exemple. Elle posséde des fonctions uniquement utilisable par des cartes 3D professionnelles (Nvidia Quadro, Wildcat de 3dLabs,ect...) bien que maintenant la plupart sont supportées par des cartes grand public. En opposition avec DirectX, bien plus orienté jeu vidéo, OpenGL à été crée à l'origine pour une utilisation professionnelle.
Ok, mais je ne vois pas très bien son application pour l'infographie....n'est-il pas plus facile de modéliser/modifier en 3D sous un logiciel comme Maya, Amapi, Rhino, etc...d'autant plus qu'il y en a pour toutes les bourses, il y en a certains d'exellentes qualités fournis gratuitement comme Amapi 3 il y a 1 ou 2 ans (dans le magasine computer arts) pour la sortie du 4...! Car il me parait beaucoup plus productif de faire une modélisation 3D sur soft que de de se casser les noisettes à pondre du code en ligne. J'imagine que l'intérêt d'OpenGL doit résider quand même dans la possibilité de dessiner et modéliser un comportement physique à partir de données physiques, donc une animation 3D ne dépendant pas du programmeur mais des données récoltées donnant une animation différente d'une compilation à une autre suivant ce qui est traité (dynamique), ce qui n'est pas possible sous un logiciel 3D où on fait ses dessins et animations, un film quoi (statique).
Sinon, peut-on faire de l'openGL quand on n'a pas de carte graphique digne de ce nom. Interdiction de riremais j'ai un pentium acheté en 1995, un 133 MHz, 40 Mo de RAM, 4 Go de disque dur, une carte graphique de 10 ans (Trident 8086, je crois ou un truc du genre). Qu'est ce que ça change graphiquement et que je ne pourrai pas faire !? J'ai déja fait quelques progs en OpenGL, juste quelques figures (cubes, triangles, etc...) que j'ai fait tourné...j'imagine que la différence doit se faire plutôt dans les fonction plus compliquées de relief comme le brouillard, la profondeur ou autres...
Soccersoft à écrit :
OpenGL est une librairie qui permet de visualiser en temps réel (ce que tu appelle "dynamique") des modéles 3D. OpenGL ne permet pas de modéliser, ce n'est pas un modeleur 3D ! Par contre dans les fenetres de modélisation de 3D Studio, Blender, et beaucoup d'autres c'est OpenGL qui est utilisée. Les modéles que tu crée avec ces modeleurs 3D peuvent être alors réutilisés dans d'autres application OpenGL (ou DirectX, ou software = sans accélération 3D).n'est-il pas plus facile de modéliser/modifier en 3D sous un logiciel comme Maya, Amapi, Rhino, etc...
Il faut bien comprendre qu'OpenGL permet juste d'afficher à l'écran des modéles en 3D, mais ces modéles seront plutôt dessinés avec une autre application, un modeleur
Soccersoft à écrit :
Car il me parait beaucoup plus productif de faire une modélisation 3D sur soft que de de se casser les noisettes à pondre du code en ligne.mais dans ton modeleur (amapi, maya, rhino...) tu ne pourra que réaliser des scénes 3D "précalculées" sans possibilité d'interaction avec l'utilisateur, alors que les applications OpenGL te permettent de gérer les actions (clavier, souris, joystick...) en temps réel de l'utilisateur.
Soccersoft à écrit :
J'imagine que l'intérêt d'OpenGL doit résider quand même dans la possibilité de dessiner et modéliser un comportement physique à partir de données physiques, donc une animation 3D ne dépendant pas du programmeur mais des données récoltées donnant une animation différente d'une compilation à une autre suivant ce qui est traité (dynamique),exactement
. Des données aléatoires, plus le comportement de l'utilisateur, changeront le déroulement du programme
j'ai un pentium acheté en 1995, un 133 MHz, 40 Mo de RAM, 4 Go de disque dur, une carte graphique de 10 ans (Trident 8086, je crois ou un truc du genre).Je ne connais pas la carte Trident, mais si tu dis que tu a deja réalisé des appli 3D alors c'est une carte accélérée 3D.J'ai déja fait quelques progs en OpenGL, juste quelques figures (cubes, triangles, etc...) que j'ai fait tourné...
OpenGL est une librairie dite "ouverte" (OpenGL = Open Graphics Librairy), ainsi chaque constructeur de carte graphique (nVidia, ATI, 3DLabs, Intel, SGI...) peut lui adjoindre les nouvelles fonctions que supportent sa carte. OpenGL posséde ainsi un nombre impréssionnant d'extensions ( qui permettent d'ajouter le relief, la reflection, des textures compressées, choisir son type de brouillard, ect...)rajoutées à tout va qui sont pour certaines supportées par une seule carte 3D ou par les cartes 3D d'un seul constructeur. Depuis la "Trident", de l'eau s'est écoulé sous les ponts et ta carte ne supportera que trés peu d'extensions.Qu'est ce que ça change graphiquement et que je ne pourrai pas faire !?
De même ta carte à une fréquence surement basse et sa capacité mémoire est surement trés faible par rapport à ce qui se fait maintenant. Tu sera donc limité par le nombre de polygones que tu pourra afficher par seconde et par la taille des textures que tu pourra leurs appliquer.
Assez récement, les cartes 3D peuvent être maintenant programmée tel le CPU et peuvent acceuillir des programmes résidents qui sont appliqués à chaque vertex ou à chaque pixel. On appelle ces programmes des vertex shaders ou pixels shaders. Il te permettent par exemple de programmer des rendus simulant le relief ou la réflection, de changer la lumiére OpenGL de base qui n'est pas super...
Mais ça peut - être un avantage d'avoir un vieu PC pourri, au moins tu teste un à un tes algos et tu peu ainsi vérifier si ils tournent bien. Les PC à 3 Ghz font tout tourner à fond, et beaucoup de gens programment comme "des porcs" (j'en fait (un peu) partiInterdiction de rire![]()
) et ce retrouvent avec des applications qui nécessitent un processeur de 1 ou 2 Ghz alors que 300 Mhz aurai été suffisant avec quelques optimisations
![]()
+
C'est un peu tordu de programmer un truc qui ne fonctionnent QUE sur sa carte graphique...pour ne pas dire que ça sert à rien ce genre d'extension alors à part pour son utilisation personnel sur son PC uniquement...je comprends pas bien cette politique de non-compatibilité...! J'imagine qu'une carte graphique à 50 euros doit savoir faire moins de choses qu'une autre à 200 euros mais comment ils font les auteurs de jeux vidéos qui développent pour tout le monde !? Ils ne vont pas faire un jeu par carte graphique
: ça donne quoi un jeu écrit pour une carte avec des fonctions spécifiques qui est essayé sur un autre PC...des plantages !?
bah les concepteur de jeux vidéo intégrent dans leur programme des fonctions pour scanner le matériel de l'utilisateur et active/désactive les extensions en conséquence. Ainsi :
La fonction glGetString(GL_EXTENSIONS); te permet de récuperer les extensions dans une chaîne et le printf te les affiche ensuite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 exten = (char *) glGetString(GL_EXTENSIONS); printf("%s\n",exten);
Ici on recherche si l'extensions GL_EXT_compiled_vertex_array est dans cette chaîne; si oui on agit en conséquence
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 if (strstr(exten, "GL_EXT_compiled_vertex_array") == 0) { printf("GL_EXT_compiled_vertex_array NOT found.\n"); exit(66); }.
Actuellement les cartes 3D "standard" et "grand public" sont soit d'ATI, soit de nVidia (il y a aussi toutes les cartes dites intégrés de SiS et Intel par exemple, mais ces cartes supportent en général assez peu d'extensions OpenGL) , et les deux constructeur proposent souvent des extensions adaptés à leur cartes qui réalisent en fait les mêmes opérations. Les concepteur de jeux vidéo n'ont donc plus qu'à demander au systéme qu'elle carte il a, et ensuite soit activer l'extension nVidia si c'est une carte qui supporte l'extension, soit activer l'extensions ATI, soit ne pas activer l'extension (Intel, SiS, ect.). Il faut savoir que de toute façon le jeu à été pensé à la base sans les extensions, donc permet à tous de jouer normalement.
OpenGL est en ce moment à la version 1.5 et la version 2.0 (tant attendue) est en préparation. Le probléme que tu souléve (politique de non compatibilité) et le fait que les extensions partent dans tout les sens est justement un gros probléme des concepteurs d'OpenGL face à DirectX, beaucoup plus "unifié". Le but est donc de rapprocher au maximum les extensions qui se ressemble le plus. Comme je te l'ai déja dit, le développement d'OpenGL est réalisé par plusieurs constructeurs (INTEL, IBM, 3DLABS, SGI, XGI, ATI et NVIDIA pour n'en citer que quelques-uns) et ils peuvent soit réaliser des fonctions qui leurs sont propre (le nom commencera alors par GL_ATI si c'est le constructeur ATI qui l'a développer), soit introduire une fonction que tout le monde à adopté, elle prendra alors comme préfixe GL_ARB (OpenGL Architecture Review Board).
Un site sur les extensions OpenGL: http://www.halflifedesign.net/?page=tuto&tut=101
si tu as d'autres question![]()
+
pour les jeux il existe plusieurs politique differentes : certaines boite ne jurent que par l'utilisation d'extention standard, supporté par tout les constructeurs (les fameuses extentions ARB) et d'autre comme ID software sont pretes a réalisé plusieurs version du coeur de leur moteur 3D, une par version de carte graphique quasiment (a l'heure actuelle, Doom 3 a plusieurs "render path", 1 pour les GeForce2, 1 pour les GeForce 3, 1 pour le GeForce 4 et un pour les autre cartes supportant les vertex et pixel shader.)
sinon l'interet de faire tourner des programme directement sur la carte graphique et non pas sur le CPU est :
- optimiser la vitesse d'execution (on profite d'un vrai paralellisme et certaine informations peuvent etre calculé directement par le GPU, limitant ainsi l'envoi d'information par le port AGP...)
- permettre de nouveau effets en fonctions des besoins du programmeur. j'ai besoin d'un effet qui me calcule de l'eclairage par pixel avec reflet speculaire mais qui m'inverse la couleur de ma texture ? pas de probleme, je fait un bête shader que j'envoi a la carte et qui m'effectura une serie d'operation sur chaque pixel de mon image...
sinon pour le coup de modelaur... tu sait que la quasi totalité des modeleurs utilisent openGL pour pouvoir visionner rapidement la scene...
* Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
* pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
Mes articles
Partager