différences entre opengl 3 et opengl 4

10

Je commence tout juste la programmation de jeux et je veux commencer à apprendre l'opengl. J'ai trouvé un très bon tutoriel à partir de zéro pour commencer avec opengl 3 et je me demande s'il y a une grande différence entre openGL 3 et openGl 4. Ou devrais-je demander, openGL 4 rend-il openGL 3 obsolète, ou je peux commencer avec openGL 3 et ensuite je peux passer à openGL 4?

Mansuro
la source

Réponses:

12

Je vais commencer par un lien vers une explication du fonctionnement des versions d'OpenGL . En bref, OpenGL (généralement) est rétrocompatible, donc tout le code GL 3 fonctionne très bien sur les implémentations GL 4.

La série 4.x de versions OpenGL représente ce que vous pourriez appeler du matériel de classe "Direct3D 11". Il expose les fonctionnalités de ce matériel. Le matériel D3D10 est représenté par les versions 3.x d'OpenGL. Donc, «passer à openGL 4» signifie abandonner le matériel inférieur ou avoir plusieurs voies de rendu.

Une ventilation détaillée des changements de fonctionnalités réels entre 3.3 et 4.2 peut être trouvée dans le spécification 4.2 . Notez que de nombreuses fonctionnalités (distinct_shader_objects, shading_language_420pack, texture_storage) ne sont pas limitées au matériel 4.x; ce sont des changements d'API et vous pouvez y accéder sur du matériel 3.x via des extensions.

La question la plus importante est la suivante: qu'est-ce que GL 4.x me permet de faire que je ne peux pas avec du matériel 3.x?

La tessellation est probablement la caractéristique la plus connue. C'est aussi probablement le moins généralement utile. Cela ne veut pas dire que c'est inutile; une bonne utilisation de la mosaïque peut améliorer les détails des modèles. Mais pour moi au moins, ce n'est pas vraiment la meilleure chose que GL 4 a à faire.

Les sous-programmes de shader sont une idée intéressante. Cela vous permet essentiellement de reconstituer dynamiquement différents fragments de shaders. Vous pouvez plus ou moins attacher une fonction à un point de liaison spécifique dans un programme. La spécification est un peu difficile à suivre, mais c'est une bonne fonctionnalité.

Je dirais que le chargement / stockage d'images est probablement l'élément le plus négligé et le plus puissant de la fonctionnalité GL 4. Avec cela, vous avez la possibilité de mettre en œuvre une transparence indépendante de l'ordre avec des performances à peu près aussi bonnes que celles qu'OIT obtiendra. Il existe probablement de nombreuses autres utilisations pour le chargement / stockage d'images, mais il faudra des personnes plus intelligentes pour les comprendre.

Il y a quelques aléas dans GL 4. Des trucs comme le support double précision et le rendu indirect. Ce sont des choses plus de style GPGPU, donc cela ne sera probablement pas d'une grande utilité dans un jeu.

Mais en général, GL 4 ne change pas radicalement la façon dont vous implémentez la fonctionnalité X à partir de GL 3.

Nicol Bolas
la source
Je dois juste dire que vous avez tout à fait tort de dire que le rendu indirect est du «style GPGPU». C'est une excellente amélioration des performances pour tout moteur de rendu qui, sinon, ferait de nombreux appels à partir du processeur et est une excellente fonctionnalité pour les jeux.
CoffeeandCode