Quelles sont les extensions OpenGL, et quels sont les avantages/avantages de les utiliser?

StackOverflow https://stackoverflow.com/questions/17352

  •  08-06-2019
  •  | 
  •  

Question

Par rapport à cette question En utilisant les extensions OpenGL, quel est le but de ces fonctions d'extension?Pourquoi voudrais-je utiliser?En outre, il n'existe aucun compromis ou de pièges associés à leur utilisation?

Était-ce utile?

La solution

La norme OpenGL permet aux vendeurs de fournir des fonctionnalités supplémentaires grâce aux extensions grâce à la nouvelle technologie créé.Les Extensions peuvent introduire de nouvelles fonctions et de nouvelles constantes, et peut se détendre ou de supprimer les restrictions existantes fonctions OpenGL.

Chaque fournisseur dispose d'une alphabétiques abréviation qui est utilisé dans la désignation de leurs nouvelles fonctions et de constantes.Par exemple, NVIDIA abréviation (NV) est utilisé dans la définition de leurs propriétaires de la fonction glCombinerParameterfvNV() et leur constante GL_NORMAL_MAP_NV.

Il peut arriver que plus d'un fournisseur s'engage à mettre en œuvre les mêmes fonctionnalités étendues.Dans ce cas, l'abréviation EXT est utilisé.En outre, il peut arriver que l'Architecture Review Board "bénit" de l'extension.Il devient alors connu comme une extension standard, et l'abréviation CEA est utilisé.La première CEA extension a été GL_ARB_multitexture, introduit dans la version 1.2.1.Suite à l'extension officielle de promotion de chemin, multitexturing n'est plus une en option en œuvre CEA extension, mais il a été une partie de l'OpenGL API de base depuis la version 1.3.

Avant d'utiliser une extension d'un programme doit d'abord déterminer sa disponibilité, et ensuite obtenir des pointeurs vers les nouvelles fonctions de l'extension définit.Le mécanisme pour le faire, c'est de la plate-forme et des bibliothèques comme GLEW et GLEE existent pour simplifier le processus.

Autres conseils

OpenGL Extensions nouvelles fonctionnalités ajoutées à la Spécification OpenGL, ils sont ajoutés par l'OpenGL corps de normes et par les divers carte graphique fournisseurs.Celles-ci sont exposées au programmeur que de nouveaux appels de fonctions ou de variables.Chaque nouvelle version de la spécification OpenGL est livré avec de nouvelles fonctionnalités et (généralement) comprend toutes les fonctionnalités et extensions.

Le véritable problème avec les extensions OpenGL n'existe que sur Windows.Microsoft n'a pas pris en charge pour les prolongations éventuelles qui ont été libérés après OpenGL v1.1.La carte graphique vendeurs de surmonter ce par l'envoi de leur propre version de cette fonctionnalité par le biais de fichiers d'en-tête et les bibliothèques.Cependant, l'utilisation de ce peut être un peu douloureux que la question liée à la montre.Mais ce problème a quasiment disparu avec la popularité de GLEW, qui prend soin d'envelopper tout cela dans un facile-à-utiliser.

Si vous utilisez une très récente extension OpenGL, être conscient qu'il ne peut pas être pris en charge sur les vieux matériel graphique.Autre que cela, il n'y a pas d'autre inconvénient à l'utilisation de ces extensions.La plupart des extensions qui deviennent standard sont sacrément utile et il y a très peu de logique, de ne pas les utiliser.

Les Extensions sont, en général, un moyen pour la carte graphique vendeurs pour ajouter de nouvelles fonctionnalités d'OpenGL sans avoir à attendre jusqu'à la prochaine révision de l'OpenGL spec.Il existe différents types d'extensions:

  1. Fournisseur extension - un seul fournisseur pour un certain type de fonctionnalité.
    • Exemple: NV_vertex_program
  2. Multifournisseurs à l'extension de plusieurs fournisseurs ont obtenu ensemble et d'accord sur la fonctionnalité.
    • Exemple: EXT_vertex_program
  3. CEA extension OpenGL Architecture Review Board a béni l'extension.Vous avez une attente raisonnable que ce type d'extension sera autour pendant un certain temps.
    • Exemple: ARB_vertex_program

Les Extensions de ne pas avoir à passer par toutes ces étapes.Parfois, une extension n'est jamais mis en œuvre par un fournisseur, avant que le matériel conceptions aller d'une manière différente et que l'extension est abandonné.D'autres fois, une prolongation peut faire jusqu'à la CEA d'état avant tout le monde décide il y a une meilleure façon.(Le ARB_vertex_program approche, par exemple, a été mis de côté en faveur de haut niveau shading language approche de ARB_vertex_shader quand il est venu le temps de rouler shaders dans le cœur OpenGL spec.) Même ARB extensions ne durent pas éternellement;Je ne voudrais pas écrire quelque chose aujourd'hui exigeant ARB_matrix_palette, par exemple.

Tout cela ayant été dit, c'est une très bonne idée de garder à jour sur les extensions, en particulier la dernière CEA et EXT extensions.Dans le passé, il a été vrai que certains de la " rapide des chemins à travers le matériel ne sont accessibles que via des extensions.De même, si vous voulez savoir ce que toutes les fonctionnalités d'un morceau de matériel peut faire, il n'y a pas de meilleur endroit pour regarder de dans un spécifiques au fournisseur d'extension.

Si vous êtes juste de commencer dans OpenGL, je vous recommande l'enquête:

  • ARB_vertex_buffer_object (les sommets)
  • ARB_vertex_shader / ARB_fragment_shader / ARB_shader_objects / GLSL spec (shaders)

Plus avancé:

  • ARB/EXT_framebuffer_object (off-screen rendering)

C'est toute la fonctionnalité qui a été roulé dans de base, mais il peut être bon de le voir dans l'isolement de sorte que vous pouvez obtenir une meilleure idée de où ses limites se trouvent.(Le noyau OpenGL spec parfaitement mélange l'ancien et le nouveau, donc cela peut être très important si vous voulez rester sur la voie rapide, et éviter l'héritage et parfois mises en œuvre dans le logiciel de chemins.)

Quoi que vous fassiez, assurez-vous que vous avez les contrôles appropriés pour les extensions que vous décidez d'utiliser, et de base si nécessaire.Même si votre carte peut avoir une extension donnée, il n'y a aucune garantie que l'extension sera présent sur un autre vendeur de la carte, ou même sur un autre système d'exploitation avec la même carte.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top