Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette annexe répertorie les différences entre OpenGL et IRIS GL. Un terme pour chaque différence est donné, suivi d’une description.
Terme | Description |
---|---|
encapsulage d’accumulation | L’opération de mémoire tampon d’accumulation OpenGL n’est pas définie lorsque les valeurs de composant dépassent 1.0 ou descendent en dessous de 1.0. |
lignes anti-attiales | OpenGL stipples lignes antialiased. IRIS GL ne le fait pas. |
arc | OpenGL prend en charge les arcs dans sa bibliothèque utilitaire. |
listes d’attributs | Les attributs envoyés par les pushattributes IRIS GL diffèrent de l’un des ensembles d’attributs poussés par le glPushAttrib OpenGL . Étant donné que tous les états OpenGL peuvent être lus, vous pouvez toutefois implémenter n’importe quelle sémantique push/pop souhaitée à l’aide d’OpenGL. |
mise à l’échelle automatique des textures | L’interface de texture OpenGL ne prend pas en charge la mise à l’échelle automatique des images sur deux dimensions. Toutefois, le GLU prend en charge la mise à l’échelle des images. |
Bbox | OpenGL ne prend pas en charge l’exécution conditionnelle des listes d’affichage. |
callfunc | OpenGL ne prend pas en charge le rappel à partir de listes d’affichage. Notez qu’IRIS GL ne prend pas non plus en charge cette fonctionnalité, lorsque le client et le serveur se trouvent sur des plateformes différentes. |
circle | OpenGL prend en charge les cercles avec le GLU. Dans OpenGL, les cercles et les arcs (disques et disques partiels) peuvent avoir des trous. En outre, vous pouvez modifier la subdivision des primitives dans OpenGL, dont les normales de surface sont disponibles pour l’éclairage. |
options clear | OpenGL efface en fait les mémoires tampons. Il n’applique pas les opérations de pixels actuellement spécifiées, telles que la fusion et la logique, quels que soient leurs modes. Pour effacer l’utilisation de ces fonctionnalités, vous devez afficher un polygone de taille de fenêtre. |
lignes fermées | OpenGL affiche toutes les lignes sous alias d’une seule largeur, de sorte que les lignes d’accostage ne partagent aucun pixel. Cela signifie que le dernier pixel d’une ligne indépendante n’est pas dessiné. |
couleur/indicateur normal | L’éclairage OpenGL est explicitement activé ou désactivé. Lorsqu’elle est activée, elle est effective quel que soit l’ordre dans lequel les couleurs et les normales sont spécifiées. Vous ne pouvez pas activer ou désactiver l’éclairage entre les commandes OpenGL glBegin et glEnd. Pour désactiver l’éclairage entre glBegin et glEnd, spécifiez aucune réflectance de matériau ambiante, diffuse et spéculaire, puis définissez l’émission de matériau sur la couleur souhaitée. |
polygones concaves | L’API OpenGL principale ne gère pas les polygones concaves, mais le GLU prend en charge la décomposition de contours concaves et non auto-croisés en triangles. Ces triangles peuvent être dessinés immédiatement ou retournés. |
couleur calculée actuelle | OpenGL n’a pas d’équivalent à une couleur calculée actuelle. Si vous utilisez OpenGL comme moteur d’éclairage, vous pouvez utiliser les commentaires pour obtenir des couleurs générées par les calculs d’éclairage. |
position graphique actuelle | OpenGL ne conserve pas une position graphique actuelle. Les commandes IRIS GL qui dépendent de la position graphique actuelle, telles que les lignes et les polygones relatifs, ne sont pas incluses dans OpenGL. |
courbes | OpenGL ne prend pas en charge les courbes IRIS GL. L’utilisation de courbes NURBS est recommandée. |
defs/binds | OpenGL n’a pas le concept d’objets matériels, légers ou texturés ; uniquement des propriétés de matériau, de lumière et de texture. Toutefois, vous pouvez utiliser des listes d’affichage pour créer leurs propres objets. |
profondeur | OpenGL n’offre pas de prise en charge directe de l’indicateur de profondeur, mais sa prise en charge du brouillard est une fonctionnalité plus générale que vous pouvez facilement utiliser pour émuler la fonction de profondeur IRIS GL. |
modification de liste d’affichage | Les listes d’affichage OpenGL ne peuvent pas être modifiées. Étant donné que vous pouvez spécifier des noms de liste d’affichage, vous pouvez toutefois redéfinir des listes d’affichage individuelles dans une hiérarchie. Les listes d’affichage OpenGL sont conçues pour la mise en cache des données, et non pour la gestion de base de données. Ils sont garantis pour être stockés sur le serveur dans des environnements client/serveur, de sorte qu’ils ne sont pas limités par la bande passante réseau pendant l’exécution. Les listes d’affichage OpenGL peuvent être appelées entre les commandes glBegin et glEnd, de sorte que la hiérarchie de liste d’affichage peut être suffisamment fine pour qu’elle puisse, en effet, être modifiée. |
vérification des erreurs | OpenGL vérifie les erreurs avec plus de soin que IRIS GL. Par exemple, toutes les fonctions OpenGL qui ne sont pas acceptées entre glBegin et glEnd sont détectées comme des erreurs et n’ont aucun autre effet. |
valeurs de retour d’erreur | Lorsqu’une commande OpenGL qui retourne une valeur détecte une erreur, elle retourne toujours zéro. Les commandes OpenGL qui retournent des données via des pointeurs passés n’apportent aucune modification au contenu du tableau si une erreur est détectée. |
effets secondaires d’erreur | Lorsqu’une commande OpenGL génère une erreur, son seul effet secondaire est de mettre à jour l’indicateur d’erreur avec la valeur appropriée. Aucune autre modification d’état n’est apportée. (Une exception est l’erreur OUT_OF_MEMORY, qui est irrécupérable.) |
feedback | Les commentaires sont standardisés dans OpenGL afin qu’ils ne changent pas d’une machine à l’autre. |
polices et chaînes | OpenGL nécessite que les glyphes de caractères soient manipulés en tant que listes d’affichage individuelles. Il fournit une fonction d’appel de liste d’affichage qui accepte une liste de noms de liste d’affichage, chaque nom représenté par 1, 2 ou 4 octets. La fonction glCallLists ajoute un décalage spécifié séparément à chaque nom de liste d’affichage avant l’appel, ce qui permet aux listes de noms de liste d’affichage d’être traitées comme des chaînes. Ce mécanisme fournit toutes les fonctionnalités des polices IRIS GL, et bien plus encore. Par exemple, les caractères composés de triangles peuvent être facilement manipulés. |
frontbuffer | IRIS GL a des règles complexes pour le rendu sur la mémoire tampon avant en mode mémoire tampon unique. OpenGL gère le rendu vers la mémoire tampon avant de manière simple. |
polygones creux | Vous pouvez utiliser la capacité de gabarit OpenGL pour afficher des polygones creux. OpenGL ne prend pas en charge d’autres moyens de créer des polygones creux. |
bridage d’index | Dans la mesure du possible, OpenGL traite les index de couleur et de gabarit comme des champs de bits plutôt que des nombres. Ainsi, les index sont masqués, plutôt que bridés, à la plage prise en charge du framebuffer. |
couleurs entières | Les composants de couleur d’entier signés (rouge, vert, bleu ou alpha) sont mappés de manière linéaire à des points flottants, de sorte que l’entier le plus négatif est mappé à 1.0 et l’entier le plus positif correspond à 1.0. Ce mappage se produit lorsque vous spécifiez la couleur avant qu’OpenGL ne remplace la couleur actuelle. Les composants de couleur d’entier non signés sont mappés de manière linéaire à des points flottants de sorte que 0 est mappé à 0,0 et que le plus grand entier est mappé à 1.0. Ce mappage se produit lorsque vous spécifiez la couleur avant qu’OpenGL remplace la couleur actuelle. |
normals entiers | Les composants normaux entiers sont mappés comme les composants de couleur signés. L’entier le plus négatif est mappé à 1.0, et l’entier le plus positif correspond à 1.0. fragments de pixels. Les pixels dessinés par glDrawPixels ou glCopyPixels sont toujours rastérisés et convertis en fragments. Les fragments résultants sont texturés, journalisés, mis en mémoire tampon, fusionnés, etc., comme s’ils étaient générés à partir de points géométriques. Les données de fragment qui ne sont pas fournies par les pixels sources sont augmentées à partir de la position raster actuelle. Par exemple, les pixels RVBA prennent la position raster Z et les coordonnées de texture. Les pixels de profondeur prennent la couleur de la position raster et les coordonnées de texture. |
Invariance | OpenGL garantit une certaine cohérence, ce qui n’est pas le cas d’IRIS GL. Par exemple, OpenGL garantit que les séquences de code identiques envoyées au même système, qui diffèrent uniquement par la fonction de fusion spécifiée, généreront les mêmes fragments de pixels. (Toutefois, les fragments diffèrent si la fusion est activée, puis désactivée.) |
équation d’éclairage | L’équation d’éclairage OpenGL diffère légèrement de l’équation IRIS GL. OpenGL prend en charge l’atténuation distincte pour chaque source de lumière, plutôt qu’une atténuation unique pour toutes les sources de lumière comme IRIS GL. OpenGL ajuste l’équation afin que les contributions d’éclairage ambiant, diffus et spéculaire soient tous atténués. OpenGL vous permet également de spécifier des couleurs distinctes pour les intensités ambiantes, diffuses et spéculaires des sources de lumière, ainsi que pour la réflexion ambiante, diffuse et spéculaire des matériaux. Toutes les couleurs de lumière et de matériau OpenGL incluent l’alpha. La définition de l’exposant spéculaire sur zéro n’empêche pas l’éclairage spéculaire dans OpenGL. |
mapw | Les utilitaires OpenGL prennent en charge le mappage entre les coordonnées d’objet et de fenêtre. |
mode matrice | Lorsque les fonctions IRIS GL ortho, ortho2, perspective et fenêtre fonctionnent sur une matrice particulière, toutes les opérations de matrice OpenGL fonctionnent sur la matrice actuelle. Toutes les opérations de matrice OpenGL à l’exception de glLoadIdentity et glLoadMatrix multiplient la matrice actuelle au lieu de la remplacer (comme le font l’ortho, l’ortho2, la perspective et la fenêtre dans iris GL). |
mipmaps, génération automatique | L’interface de texture OpenGL ne prend pas en charge la génération automatique d’images mipmap. Toutefois, le GLU prend en charge la génération automatique d’images mipmap pour les textures 1D et 2D. |
move/draw/pmove/pdraw/pclos | OpenGL prend uniquement en charge les graphiques de style Début/Fin, car il ne conserve pas de position graphique actuelle. La spécification de paramètre scalaire des anciennes commandes de déplacement/dessin est acceptée par OpenGL pour toutes les commandes liées au vertex. |
mode mprojection | IRIS GL ne transforme pas la géométrie par la matrice modelview en mode de matrice de projection. OpenGL se transforme toujours à la fois par modelview et par la matrice de projection, quel que soit le mode de matrice. |
Dessin multi-tampon | OpenGL effectue le rendu de chaque mémoire tampon de couleur individuellement, au lieu de calculer une nouvelle valeur de couleur unique basée sur le contenu d’une mémoire tampon de couleur et de l’écrire dans toutes les mémoires tampons de couleurs activées, comme le fait IRIS GL. |
NURBS | OpenGL prend en charge NURBS avec une combinaison de fonctionnalités de base (évaluateurs) et de prise en charge GLU. Toutes les fonctionnalités IRIS GL NURBS sont prises en charge. |
ancien mode polygone | Les polygones OpenGL avec alias sont toujours échantillonnés ponctuellement. Le mode de compatibilité des polygones d’IRIS GL, où les pixels situés en dehors du périmètre du polygone sont inclus dans sa rastérisation, n’est pas pris en charge. Si votre code utilise ce mode polygone, il s’agit probablement de rectangles. Les anciens rectangles en mode polygone apparaissent d’un pixel plus large et plus haut. |
formats de couleurs compressés | OpenGL accepte les couleurs en tant que composants 8 bits, mais ces composants sont traités comme un tableau d’octets plutôt que comme des octets empaquetés dans des mots plus grands. En encourageant l’indexation matricielle plutôt que le décalage, OpenGL favorise la programmation invariante endian. Tout comme IRIS GL accepte les couleurs compressées à la fois pour le rendu géométrique et le rendu des pixels, OpenGL accepte les tableaux de composants de couleur pour le rendu géométrique et pixel. |
Correctifs | OpenGL ne prend pas en charge les correctifs IRIS GL. |
masque d’écriture de couleur par bit | Les masques d’écriture OpenGL pour les composants couleur permettent ou désactivent les modifications apportées à l’ensemble du composant (rouge, vert, bleu ou alpha), et non à des bits de composants individuels. Notez toutefois que les masque d’écriture par bit sont pris en charge pour les index de couleur et les index de gabarit. |
Masque d’écriture de profondeur par bit | Les masques d’écriture OpenGL pour les composants de profondeur permettent ou désactivent les modifications apportées à l’ensemble du composant, et non à des bits individuels du composant de profondeur. |
pick | La bibliothèque de l’utilitaire OpenGL prend en charge la génération d’une matrice de choix. |
coordonnées de pixels | Dans OpenGL et IRIS GL, l’origine du système de coordonnées d’une fenêtre se trouve dans son coin inférieur gauche. OpenGL place l’origine dans l’angle inférieur gauche de ce pixel, tandis que IRIS GL la place au centre du pixel inférieur gauche. |
zoom pixel | Les facteurs de zoom négatifs OpenGL reflètent la position graphique actuelle. IRIS GL ne définit pas le fonctionnement des facteurs de zoom négatifs et fournit plutôt des pixmodes de réflexion RIGHT_TO_LEFT et TOP_TO_BOTTOM. Ces modes de réflexion se reflètent sur place, plutôt que sur la position actuelle du raster. OpenGL ne définit pas les modes de réflexion. |
pixmode | Les transferts de pixels OpenGL fonctionnent sur des composants de couleur individuels, plutôt que sur des groupes compressés de quatre composants 8 bits, comme le fait IRIS GL. Bien qu’OpenGL offre beaucoup plus de fonctionnalités en pixels que IRIS GL, il ne prend pas en charge les constructions de couleurs empaquetées et ne permet pas aux composants de couleur d’être réaffectés (rouge à vert, rouge à bleu, etc.) pendant les opérations de copie de pixels. |
polf/poly | OpenGL ne fournit aucune prise en charge directe pour les listes de vertex autres que les listes d’affichage. Toutefois, des fonctions telles que polf et poly peuvent être implémentées facilement à l’aide de l’API OpenGL. |
polygone provoquant le sommet | Les polygones IRIS GL ombrés plats prennent la couleur du dernier sommet spécifié, tandis que les polygones OpenGL prennent la couleur du premier sommet spécifié. |
polygone stipple | Avec IRIS GL, le modèle d’info-bulle de polygone est relatif à l’écran. Avec OpenGL, il est relatif à une fenêtre. |
nombre de sommets de polygones | Il n’existe aucune limite au nombre de sommets entre glBegin et glEnd avec OpenGL, même pour glBegin(POLYGON ). Avec IRIS GL, les polygones ne sont pas plus de 255 sommets. |
readdisplay | La lecture de pixels en dehors des limites de fenêtre est une fonctionnalité système de fenêtre, plutôt qu’une fonctionnalité de rendu. Utilisez les fonctions Windows pour remplacer la commande IRIS GL readdisplay. |
relative move/draw/pmove/pdraw/pclos | OpenGL ne conserve pas de position graphique actuelle et ne prend donc pas en charge les opérations de vertex relatives. |
RGBA logicop() | OpenGL ne prend pas en charge les opérations logiques sur les mémoires tampons RVBA. |
sbox() | sbox est une primitive de rectangle IRIS GL qui est bien définie uniquement si elle est transformée sans rotation. Il est conçu pour être rendu plus rapidement que les rectangles standard. Bien qu’OpenGL ne prend pas en charge une telle primitive, il peut être ajusté pour afficher les rectangles très rapidement lorsque les matrices et d’autres modes sont dans des états qui simplifient les calculs. |
arguments scalaires | Toutes les commandes OpenGL acceptées entre glBegin et glEnd ont des points d’entrée qui acceptent des arguments scalaires. Par exemple, glColor4f (rouge, vert, bleu, alpha ). |
Ciseaux | La fonction glScissor OpenGL ne suit pas la fenêtre d’affichage. La commande de fenêtre d’affichage IRIS GL met automatiquement à jour le masque. |
scrbox() | OpenGL ne prend pas en charge le calcul de zone englobante. |
scrsubdivide() | OpenGL ne prend pas en charge la subdivision d’écran. |
mode matrice unique | OpenGL gère toujours deux matrices : ModelView et Projection. Bien qu’une implémentation OpenGL puisse les consolider en une seule matrice pour des raisons de performances, elle doit toujours présenter le modèle à deux matrices au programmeur. |
mode subpixel | Tout le rendu OpenGL est positionné sous-pixelssubpixel mode est toujours activé. |
swaptmesh() | OpenGL ne prend pas en charge la fonctionnalité swaptmesh. Toutefois, il offre deux types de maillages triangles : l’un qui correspond au comportement « strip » par défaut du GL IRIS, et l’autre qui correspond à l’appel de swaptmesh avant le troisième et tous les sommets suivants lors de l’utilisation d’IRIS GL. |
arguments vectoriels | Toutes les commandes OpenGL acceptées entre glBegin et glEnd ont des points d’entrée qui acceptent des arguments vectoriels. Par exemple, glColor4fv . |
gestion des fenêtres | OpenGL n’inclut aucune commande système de fenêtre. Il est toujours pris en charge en tant qu’extension d’une fenêtre ou d’un système d’exploitation qui inclut la fonctionnalité de contrôle de l’appareil et de la fenêtre. Chaque extension fournit un mécanisme propre au système pour créer, détruire et manipuler des contextes de rendu OpenGL. Par exemple, l’extension OpenGL du système de fenêtre X (GLX) comprend environ 10 commandes à cet effet. Les commandes IRIS GL telles que gconfig et drawmode ne sont pas implémentées par OpenGL. |
décalage de fenêtre | IRIS GL retourne les coordonnées de la fenêtre d’affichage et des caractères à l’écran plutôt qu’à la fenêtre. OpenGL utilise toujours les coordonnées de fenêtre. |
z rendu | OpenGL ne prend pas en charge le rendu des couleurs dans la mémoire tampon de profondeur. Il permet d’ajouter des mémoires tampons de couleur, qui peuvent être implémentées à l’aide de la même mémoire que celle utilisée pour les tampons de profondeur dans d’autres configurations de fenêtre. Toutefois, ces tampons de couleur supplémentaires ne peuvent pas partager la mémoire avec la mémoire tampon de profondeur dans une configuration unique. |