Freigeben über


IRIS GL- und OpenGL-Unterschiede

In diesem Anhang werden die Unterschiede zwischen OpenGL und IRIS GL aufgeführt. Es wird ein Begriff für jeden Unterschied angegeben, gefolgt von einer Beschreibung.

Ausdruck Beschreibung
Akkumulationsumbruch Der OpenGL-Akkumulationspuffervorgang wird nicht definiert, wenn Komponentenwerte 1,0 überschreiten oder unter 1,0 fallen.
antialiasierte Linien OpenGL stippt antialiasierte Linien. IRIS GL nicht.
Bogen OpenGL unterstützt Arcs in seiner Hilfsbibliothek.
Attributlisten Die attribute, die von den IRIS GL pushattributes pushattributes pushed from any of the attribute sets pushed by the OpenGL glPushAttrib . Da alle OpenGL-Zustände zurückgelesen werden können, können Sie jedoch alle gewünschten Push-/Pop-Semantik mit OpenGL implementieren.
automatische Texturskalierung Die OpenGL-Texturschnittstelle unterstützt keine automatische Skalierung von Bildern auf zwei Dimensionen. Der GLU unterstützt jedoch die Bildskalierung.
bbox OpenGL unterstützt keine bedingte Ausführung von Anzeigelisten.
Callfunc OpenGL unterstützt keinen Rückruf aus Anzeigelisten. Beachten Sie, dass IRIS GL diese Funktionalität auch nicht unterstützt, wenn Sich Client und Server auf verschiedenen Plattformen befinden.
Kreis OpenGL unterstützt Kreise mit dem GLU. In OpenGL können sowohl Kreise als auch Bögen (Datenträger und Partielle Datenträger) Löcher aufweisen. Darüber hinaus können Sie die Unterteilung der Grundtypen in OpenGL ändern, deren Oberflächennormalen für die Beleuchtung verfügbar sind.
Optionen löschen OpenGL löscht tatsächlich Puffer. Es gelten derzeit angegebene Pixelvorgänge, z. B. Blending und Logicop, unabhängig von ihren Modi nicht. Um die Verwendung solcher Features zu löschen, müssen Sie ein Polygon mit Fenstergröße rendern.
Geschlossene Linien OpenGL rendert alle aliasgestrichenen Zeilen mit einfacher Breite, sodass ein Aufstoßen keine Pixel gemeinsam verwendet. Dies bedeutet, dass das letzte Pixel einer unabhängigen Linie nicht gezeichnet wird.
Farb-/Normalkennzeichnung OpenGL-Beleuchtung ist explizit aktiviert oder deaktiviert. Wenn diese Option aktiviert ist, ist sie unabhängig von der Reihenfolge wirksam, in der Farben und Normalwerte angegeben werden. Sie können die Beleuchtung zwischen openGL glBegin- und glEnd-Befehlen nicht aktivieren oder deaktivieren. Um die Beleuchtung zwischen glBegin und glEnd zu deaktivieren, geben Sie null Umgebungs-, Diffuse- und Glanzmaterialspiegelung an, und legen Sie dann die Materialemissionen auf die gewünschte Farbe fest.
Konkadierte Polygone Die OpenGL-Kern-API behandelt keine konkavierten Polygone, aber die GLU unterstützt dekompilierende Konturen, die nicht selbst überschneidende Konturen in Dreiecke. Diese Dreiecke können entweder sofort gezeichnet oder zurückgegeben werden.
aktuelle berechnete Farbe OpenGL hat keine Entsprechung mit einer aktuellen berechneten Farbe. Wenn Sie OpenGL als Beleuchtungsmodul verwenden, können Sie Feedback verwenden, um farben zu erhalten, die von Beleuchtungsberechnungen generiert werden.
aktuelle Grafikposition OpenGL behält keine aktuelle Grafikposition bei. IRIS GL-Befehle, die von der aktuellen Grafikposition abhängen, z. B. relative Linien und Polygone, sind in OpenGL nicht enthalten.
Kurven OpenGL unterstützt keine IRIS GL-Kurven. Die Verwendung von NURBS-Kurven wird empfohlen.
defs/binds OpenGL verfügt nicht über das Konzept von Material-, Licht- oder Texturobjekten; nur von Material-, Licht- und Textureigenschaften. Sie können Anzeigelisten verwenden, um jedoch eigene Objekte zu erstellen.
depthcue OpenGL bietet keine direkte Unterstützung für Tiefenmarkierung, aber seine Nebelunterstützung ist eine allgemeinere Funktion, mit der Sie die IRIS GL Depthcue-Funktion leicht emulieren können.
Listenbearbeitung anzeigen OpenGL-Anzeigelisten können nicht bearbeitet und zerstört werden. Da Sie jedoch Anzeigelistennamen angeben können, können Sie einzelne Anzeigelisten in einer Hierarchie neu definieren. OpenGL-Anzeigelisten sind für die Datenzwischenspeicherung ausgelegt, nicht für die Datenbankverwaltung. Sie werden garantiert auf dem Server in Client-/Serverumgebungen gespeichert, sodass sie während der Ausführung nicht durch die Netzwerkbandbreite begrenzt werden. OpenGL-Anzeigelisten können zwischen glBegin- und glEnd-Befehlen aufgerufen werden, sodass die Anzeigelistenhierarchie so gut wie möglich bearbeitet werden kann.
Fehlerüberprüfung OpenGL sucht sorgfältiger nach Fehlern als IRIS GL. Beispielsweise werden alle OpenGL-Funktionen, die nicht zwischen glBegin und glEnd akzeptiert werden, als Fehler erkannt und haben keine andere Auswirkung.
Fehlerrückgabewerte Wenn ein OpenGL-Befehl, der einen Wert zurückgibt, einen Fehler erkennt, wird immer Null zurückgegeben. OpenGL-Befehle, die Daten über übergebene Zeiger zurückgeben, ändern den Arrayinhalt nicht, wenn ein Fehler erkannt wird.
Fehler-Nebenwirkungen Wenn ein OpenGL-Befehl zu einem Fehler führt, besteht der einzige Nebeneffekt darin, das Fehlerkennzeichnung auf den entsprechenden Wert zu aktualisieren. Es werden keine weiteren Zustandsänderungen vorgenommen. (Eine Ausnahme ist der OUT_OF_MEMORY Fehler, der schwerwiegend ist.)
Feedback Das Feedback wird in OpenGL standardisiert, sodass es sich nicht von Computer zu Computer ändert.
Schriftarten und Zeichenfolgen OpenGL erfordert, dass Zeichenglyphen als einzelne Anzeigelisten bearbeitet werden. Sie stellt eine Anzeigelistenaufruffunktion bereit, die eine Liste mit Anzeigelistennamen akzeptiert, die jeweils als 1, 2 oder 4 Byte dargestellt werden. Die glCallLists-Funktion fügt vor dem Aufruf einen separat angegebenen Offset zu jedem Anzeigelistennamen hinzu, sodass Listen mit Anzeigelisten als Zeichenfolgen behandelt werden können. Dieser Mechanismus bietet alle Funktionen von IRIS GL-Schriftarten und deutlich mehr. Beispielsweise können Zeichen, die aus Dreiecken bestehen, einfach bearbeitet werden.
Frontbuffer IRIS GL verfügt über komplexe Regeln zum Rendern im Frontpuffer im Einzelpuffermodus. OpenGL behandelt das Rendern im Frontpuffer auf einfache Weise.
hohle Polygone Sie können die OpenGL-Schablonenkapazität verwenden, um hohle Polygone zu rendern. OpenGL unterstützt keine anderen Mittel zum Erstellen von hohlen Polygonen.
Indexklammern Wenn möglich, behandelt OpenGL Farb- und Schablonenindizes als Bitfelder anstelle von Zahlen. Daher werden Indizes an den unterstützten Bereich des Framebuffers maskiert und nicht geklammert.
Ganzzahlfarben Signierte ganzzahlige Farbkomponenten (Rot, Grün, Blau oder Alpha) werden linear den Gleitkommapunkten zugeordnet, sodass die negativste ganze Zahl 1,0 und die positivste ganze Zahl 1,0 zugeordnet ist. Diese Zuordnung tritt auf, wenn Sie die Farbe angeben, bevor OpenGL die aktuelle Farbe ersetzt. Nicht signierte ganzzahlige Farbkomponenten werden linear gleitenden Punkten zugeordnet, sodass 0 0 zu 0,0 und die größte ganze Zahl 1,0 zugeordnet ist. Diese Zuordnung tritt auf, wenn Sie die Farbe angeben, bevor OpenGL die aktuelle Farbe ersetzt.
Ganzzahlnormale Ganzzahlnormale Komponenten werden wie signierte Farbkomponenten zugeordnet. Die negativste ganze Zahl entspricht 1,0, und die positivste ganze Zahl ist 1,0 zugeordnet. Pixelfragmente. Pixel, die von glDrawPixels oder glCopyPixels gezeichnet werden, werden immer gerastert und in Fragmente konvertiert. Die resultierenden Fragmente sind texturiert, abgeblendet, tiefenpuffert, gemischt usw., genau so, als ob sie aus geometrischen Punkten generiert wurden. Fragmentdaten, die nicht von den Quellpixeln bereitgestellt werden, werden von der aktuellen Rasterposition erweitert. Beispielsweise nehmen RGBA-Pixel die Rasterposition Z und Texturkoordinaten an. Tiefenpixel nehmen die Rasterpositionsfarbe und Texturkoordinaten ein.
Beständigkeit OpenGL garantiert eine gewisse Konsistenz, die IRIS GL nicht hat. Beispielsweise garantiert OpenGL, dass identische Codesequenzen, die an dasselbe System gesendet werden, nur in der angegebenen Mischfunktion abweichen, dieselben Pixelfragmente generieren. (Die Fragmente unterscheiden sich jedoch, wenn die Vermischung aktiviert und dann deaktiviert ist.)
Beleuchtungsgleichung Die Formel für die OpenGL-Beleuchtung unterscheidet sich geringfügig von der Formel IRIS GL. OpenGL unterstützt eine separate Dämpfung für jede Lichtquelle anstelle einer einzelnen Dämpfung für alle Lichtquellen wie IRIS GL. OpenGL passt die Formel so an, dass Umgebungs-, Diffuse- und Glanzlichtbeiträge abgeschwächt werden. Darüber hinaus können Sie mit OpenGL separate Farben für die Umgebungs-, Diffuse- und Glanzintensitäten von Lichtquellen sowie für die Umgebungs-, Diffuse- und Glanzreflektion von Materialien angeben. Alle OpenGL-Licht- und Materialfarben enthalten Alpha. Das Festlegen des glanzären Exponenten auf Null hat in OpenGL keine Glanzbeleuchtung.
mapw OpenGL-Hilfsprogramme unterstützen die Zuordnung zwischen Objekt- und Fensterkoordinaten.
Matrixmodus Wenn die IRIS GL-Ortho-, Ortho2-, Perspektiv- und Fensterfunktionen mit einer bestimmten Matrix arbeiten, arbeiten alle OpenGL-Matrixvorgänge an der aktuellen Matrix. Alle OpenGL-Matrixvorgänge außer glLoadIdentity und glLoadMatrix multiplizieren die aktuelle Matrix, anstatt sie zu ersetzen (wie Ortho, Ortho2, Perspektive und Fenster in der IRIS GL).
mipmaps, automatische Generierung Die OpenGL-Texturschnittstelle unterstützt keine automatische Generierung von Mipmap-Bildern. Die GLU unterstützt jedoch die automatische Generierung von Mipmap-Bildern für 1D- und 2D-Texturen.
move/draw/pmove/pdraw/pclos OpenGL unterstützt nur Grafiken im Anfangs-/End-Stil, da keine aktuelle Grafikposition beibehalten wird. Die skalare Parameterspezifikation der alten Bewegungs-/Zeichenbefehle wird jedoch von OpenGL für alle Vertexbefehle akzeptiert.
Mprojection-Modus IRIS GL transformiert geometrie nicht durch die Modellansichtsmatrix im Projektionsmatrixmodus. OpenGL transformiert immer sowohl durch die Modellansicht als auch die Projektionsmatrix, unabhängig vom Matrixmodus.
Zeichnung mit mehreren Puffern OpenGL rendert für jeden Farbpuffer einzeln, anstatt einen einzelnen, neuen Farbwert basierend auf dem Inhalt eines Farbpuffers zu berechnen und in alle aktivierten Farbpuffer zu schreiben, wie IRIS GL.
NURBS OpenGL unterstützt NURBS mit einer Kombination aus Kernfunktionen (Evaluatoren) und GLU-Unterstützung. Alle IRIS GL NURBS-Funktionen werden unterstützt.
Alter Polygonmodus Als Alias versehene OpenGL-Polygone werden immer punktiert. Der Polygonkompatibilitätsmodus von IRIS GL, in dem Pixel außerhalb des Polygonperimeters in der Rasterung enthalten sind, wird nicht unterstützt. Wenn Ihr Code diesen Polygonmodus verwendet, ist er wahrscheinlich für Rechtecke vorgesehen. Alte Polygonmodusrechtecke werden ein Pixel breiter und höher angezeigt.
gepackte Farbformate OpenGL akzeptiert Farben als 8-Bit-Komponenten, diese Komponenten werden jedoch als Bytearray und nicht als Bytes behandelt, die in größere Wörter verpackt sind. Durch die Förderung der Arrayindizierung anstatt der Verschiebung fördert OpenGL die endian-invariante Programmierung. Genau wie IRIS GL gepackte Farben sowohl für geometrisches als auch pixelrendering akzeptiert, akzeptiert OpenGL Arrays von Farbkomponenten für geometrisches und Pixelrendering.
Patches OpenGL unterstützt keine IRIS GL-Patches.
Per-Bit-Farbschreibmaske OpenGL-Schreibmasken für Farbkomponenten aktivieren oder deaktivieren Änderungen an der gesamten Komponente (Rot, Grün, Blau oder Alpha), nicht auf einzelne Komponentenbits. Beachten Sie, dass pro Bit Schreibmasken sowohl für Farbindizes als auch für Schablonenindizes unterstützt werden.
Tiefenschreibmaske pro Bit OpenGL-Schreibmasken für Tiefenkomponenten aktivieren oder deaktivieren Änderungen an der gesamten Komponente, nicht auf einzelne Bits der Tiefenkomponente.
picken Die OpenGL Utility-Bibliothek enthält Unterstützung für das Generieren einer Auswahlmatrix.
Pixelkoordinaten In OpenGL und IRIS GL befindet sich der Ursprung des Koordinatensystems eines Fensters in der unteren linken Ecke. OpenGL platziert den Ursprung jedoch in der unteren linken Ecke dieses Pixels, während IRIS GL ihn in der Mitte des unteren linken Pixels platziert.
Pixelzoom Negative OpenGL-Zoomfaktoren spiegeln die aktuelle Grafikposition wider. IRIS GL definiert nicht den Betrieb negativer Zoomfaktoren und stellt stattdessen RIGHT_TO_LEFT und TOP_TO_BOTTOM Reflektion pixmodes bereit. Diese Spiegelungsmodi spiegeln statt an der aktuellen Rasterposition wider. OpenGL definiert keine Spiegelungsmodi.
pixmode OpenGL-Pixelübertragungen funktionieren auf einzelnen Farbkomponenten und nicht auf verpackten Gruppen von vier 8-Bit-Komponenten wie IRIS GL. OpenGL bietet zwar wesentlich mehr Pixelfunktionen als IRIS GL, unterstützt jedoch keine gepackten Farbkonstrukte, und während Pixelkopien können Farbkomponenten nicht neu zugewiesen werden (Rot zu Grün, Rot und Blau usw.).
polf/poly OpenGL bietet keine direkte Unterstützung für Andere Vertexlisten als Anzeigelisten. Funktionen wie Polf und Poly können jedoch problemlos mit der OpenGL-API implementiert werden.
Polygon provozierter Scheitelpunkt Flache, schattierte IRIS GL-Polygone nehmen die Farbe des letzten angegebenen Scheitelpunkts an, während OpenGL-Polygone die Farbe des ersten angegebenen Scheitelpunkts übernehmen.
Polygon-Stipp Mit IRIS GL ist das Polygon-Stippmuster relativ zum Bildschirm. Bei OpenGL ist es relativ zu einem Fenster.
Polygonvertexanzahl Es gibt keine Beschränkung für die Anzahl der Scheitelpunkte zwischen glBegin und glEnd mit OpenGL, auch für glBegin(POLYGON). Bei IRIS GL sind Polygone auf maximal 255 Scheitelpunkte beschränkt.
readdisplay Das Lesen von Pixeln außerhalb der Fensterbegrenzungen ist eine Systemfunktion für Fenster und nicht um eine Renderingfunktion. Verwenden Sie Windows-Funktionen, um den BEFEHL "IRIS GL readdisplay" zu ersetzen.
Relative Bewegung/draw/pmove/pdraw/pclos OpenGL behält keine aktuelle Grafikposition bei und unterstützt daher keine relativen Vertexvorgänge.
RGBA logicop() OpenGL unterstützt keine logischen Vorgänge in RGBA-Puffern.
sbox() sbox ist ein IRIS GL-Rechteckgrundtyp, der nur dann gut definiert ist, wenn er ohne Drehung transformiert wird. Es ist so konzipiert, dass es schneller gerendert wird als Standardrechtecke. Während OpenGL einen solchen Grundtyp nicht unterstützt, kann er so angepasst werden, dass Rechtecke sehr schnell gerendert werden, wenn sich die Matrizen und andere Modi in Zuständen befinden, die Berechnungen vereinfachen.
Skalare Argumente Alle OpenGL-Befehle, die zwischen glBegin und glEnd akzeptiert werden, weisen Einstiegspunkte auf, die skalare Argumente akzeptieren. Beispiel: glColor4f (Rot, Grün, Blau, Alpha).
Schere Die OpenGL glScissor-Funktion verfolgt den Viewport nicht. Der BEFEHL IRIS GL viewport aktualisiert automatisch das Scrmask.
scrbox() OpenGL unterstützt keine Begrenzungsfeldberechnung.
scrsubdivide() OpenGL unterstützt keine Bildschirmunterteilung.
Einzelmatrixmodus OpenGL verwaltet immer zwei Matrizen: ModelView und Projection. Während eine OpenGL-Implementierung diese aus Leistungsgründen in einer einzigen Matrix konsolidieren kann, muss sie dem Programmierer immer das Zwei-Matrix-Modell präsentieren.
Subpixelmodus Das Gesamte OpenGL-Rendering ist subpixelpositionedsubpixel-Modus immer aktiviert.
swaptmesh() OpenGL unterstützt die Swaptmesh-Funktion nicht. Es bietet jedoch zwei Arten von Dreiecksgittern: eines, das dem Standardmäßigen "Strip"-Verhalten des IRIS GL entspricht, und ein anderer, der dem Aufrufen von Swaptmesh vor dem dritten und allen nachfolgenden Scheitelpunkten bei Verwendung von IRIS GL entspricht.
Vektorargumente Alle OpenGL-Befehle, die zwischen glBegin und glEnd akzeptiert werden, weisen Einstiegspunkte auf, die Vektorargumente akzeptieren. Beispiel: glColor4fv .
Fensterverwaltung OpenGL enthält keine Fenstersystembefehle. Es wird immer als Erweiterung für ein Fenster oder Betriebssystem unterstützt, das Funktionen für die Geräte- und Fenstersteuerung enthält. Jede Erweiterung bietet einen systemspezifischen Mechanismus zum Erstellen, Zerstören und Bearbeiten von OpenGL-Renderingkontexten. Die OpenGL-Erweiterung für das X-Fenstersystem (GLX) umfasst z. B. etwa 10 Befehle für diesen Zweck. IRIS GL-Befehle wie gconfig und drawmode werden von OpenGL nicht implementiert.
Fensteroffset IRIS GL gibt Viewport- und Zeichenpositionen im Bildschirm anstelle von Fensterkoordinaten zurück. OpenGL verwendet immer Fensterkoordinaten.
z-Rendering OpenGL unterstützt das Rendern von Farben im Tiefenpuffer nicht. Es ermöglicht zusätzliche Farbpuffer, die mit demselben Speicher implementiert werden können, der für Tiefenpuffer in anderen Fensterkonfigurationen verwendet wird. Diese zusätzlichen Farbpuffer können den Speicher jedoch nicht in einer einzigen Konfiguration mit dem Tiefenpuffer teilen.