Offener GL

OpenGL (Öffnen Grafikbibliothek), ist eine Standardspezifizierung, die eine Quer-Sprache, Quer-Plattform-API definiert, um Anwendungen zu schreiben, die 2. und 3D Computergrafik erzeugen. Die Schnittstelle besteht aus mehr als 250 verschiedenen Funktionsanrufen, die verwendet werden können, um komplizierte dreidimensionale Szenen von einfachen Primitiven zu ziehen. OpenGL wurde von Silicon Graphics Inc. (SGI) 1992 entwickelt und wird in CAD, virtueller Realität, wissenschaftlicher Vergegenwärtigung, Informationsvergegenwärtigung, Flugsimulation und Videospielen weit verwendet. OpenGL wird vom gemeinnützigen Technologiekonsortium Khronos Group geführt.

Design

OpenGL dient zwei Hauptzwecken, zu:

  1. verbergen Sie Kompliziertheiten des Verbindens mit verschiedenen 3D-Gaspedalen, indem Sie eine einzelne, gleichförmige Schnittstelle präsentieren
  2. verbergen Sie sich unterscheidende Fähigkeiten zu Hardware-Plattformen, indem Sie Unterstützung der vollen Merkmalsreihe von OpenGL für alle Durchführungen verlangen (Softwarewetteifer nötigenfalls verwendend)
,

In seiner grundlegenden Operation akzeptiert OpenGL Primitive wie Punkte, Linien und Vielecke, und wandelt sie in Pixel über eine als die Zustandmaschine von OpenGL bekannte Grafikrohrleitung um. Der grösste Teil von OpenGL befiehlt entweder Problem-Primitiven zur Grafikrohrleitung, oder konfigurieren Sie, wie die Rohrleitung diese Primitiven bearbeitet. Vor der Einführung von OpenGL 2.0 hat jede Bühne der Rohrleitung eine feste Funktion durchgeführt und war nur innerhalb von dichten Grenzen konfigurierbar. OpenGL 2.0 Angebote mehrere Stufen, die das völlig programmierbare Verwenden GLSL sind.

OpenGL ist eine auf niedriger Stufe, verfahrensrechtliche API, der Programmierer verlangend, die genauen Schritte zu diktieren, die erforderlich sind, eine Szene zu machen. Das stellt mit dem beschreibenden (auch bekannt als Szene-Graph oder behaltene Weise) APIs gegenüber, wo ein Programmierer nur eine Szene beschreiben muss und die Bibliothek die Details der Übergabe davon kann führen lassen. Das auf niedriger Stufe Design von OpenGL verlangt, dass Programmierer gute Kenntnisse der Grafikrohrleitung haben, sondern auch gibt einen bestimmten Betrag der Freiheit, neuartige Übergabe-Algorithmen durchzuführen.

OpenGL ist auf die Entwicklung von 3D-Gaspedalen historisch einflussreich gewesen, ein Grundniveau der Funktionalität fördernd, die jetzt in der Verbraucherniveau-Hardware üblich ist:

  • Punkte von Rasterised, Linien und Vielecke als grundlegende Primitive
  • Ein Umgestalten und sich entzündende Rohrleitung
  • Z-Pufferung
  • Textur, die kartografisch darstellt
  • Alpha, das verschmilzt

Eine kurze Beschreibung des Prozesses in der Grafikrohrleitung konnte sein:

  1. Einschätzung, nötigenfalls, der polynomischen Funktionen, die bestimmte Eingänge wie NURBS-Oberflächen definieren, Kurven und der Oberflächengeometrie näher kommend.
  2. Scheitelpunkt-Operationen, sich verwandelnd und sie abhängig von ihrem Material anzündend. Auch nichtsichtbare Teile der Szene klammernd, um das Betrachtungsvolumen zu erzeugen.
  3. Rasterisation oder Konvertierung der vorherigen Information in Pixel. Die Vielecke werden durch die passende Farbe mittels Interpolationsalgorithmen vertreten.
  4. Operationen pro Bruchstück, wie das Aktualisieren von Werten abhängig von eingehenden und vorher versorgten Tiefe-Werten oder Farbenkombinationen, unter anderen.
  5. Letzt werden Bruchstücke in den Rahmenpuffer eingefügt.

Viele moderne 3D-Gaspedale stellen Funktionalität weit über dieser Grundlinie zur Verfügung, aber diese neuen Eigenschaften sind allgemein Erhöhungen dieser grundlegenden Rohrleitung aber nicht radikale Revisionen davon.

Beispiel

Dieses Beispiel wird ein grünes Quadrat auf dem Schirm ziehen. OpenGL hat mehrere Weisen, diese Aufgabe zu vollbringen, aber das ist am leichtesten zu verstehen. Jedoch sollte der Leser bewusst sein, dass die meisten APIs, die im Code unten verwendet sind, in und nach OpenGL 3.0 Spezifizierung missbilligt worden sind.

glClear (GL_COLOR_BUFFER_BIT);

</Quelle>

:This-Behauptung klärt den Farbenpuffer, so dass der Schirm Formblatt anfangen wird. Es nimmt ein Argument, das definiert, welcher Puffer, sich in diesem Fall zu klären, es der Farbenpuffer ist.

glMatrixMode (GL_PROJECTION);/* Nachfolgende Matrixbefehle wird die Vorsprung-Matrix * / betreffen

glLoadIdentity ;/* Initialisieren die Vorsprung-Matrix zur Identität * /

glFrustum (-1, 1,-1, 1, 1, 1000);/* Wenden eine Perspektivevorsprung-Matrix * / An

</Quelle>

:These-Behauptungen initialisieren die Vorsprung-Matrix, eine 3. frustum Matrix setzend, die das viewable Gebiet vertritt (frustum ansehend). Diese Matrix gestaltet Gegenstände vom Kameraverhältnisraum bis den Vorsprung-Raum von OpenGL um.

glMatrixMode (GL_MODELVIEW);/* Nachfolgende Matrixbefehle wird die modelview Matrix * / betreffen

glLoadIdentity ;/* Initialisieren den modelview zur Identität * /

glTranslatef (0, 0,-3);/* Übersetzen den modelview 3 Einheiten entlang der Z Achse * /

</Quelle>

:These-Behauptungen initialisieren die modelview Matrix. Diese Matrix definiert ein Umgestalten von Musterverhältniskoordinaten bis Kameraraum. Die Kombination der modelview Matrix und der Vorsprung-Matrix gestaltet Gegenstände vom Musterverhältnisraum bis Projektionswand-Raum um.

glBegin (GL_POLYGON);/* Beginnen, ein Vieleck * / auszugeben

glColor3f (0, 1, 0);/* Stellen die aktuelle Farbe zum Grün * / Ein

glVertex3f (-1,-1, 0);/*-Problem ein Scheitelpunkt * /

glVertex3f (-1, 1, 0);/*-Problem ein Scheitelpunkt * /

glVertex3f (1, 1, 0);/*-Problem ein Scheitelpunkt * /

glVertex3f (1,-1, 0);/*-Problem ein Scheitelpunkt * /

glEnd ;/*-Schluss, das Vieleck * / ausgebend

</Quelle>

:These-Befehle ziehen ein grünes Quadrat im XY Flugzeug. Das verwendet unmittelbare Weise. Das Quadrat konnte auch mit der Reihe gemacht werden und glDrawArrays rufend.

Dokumentation

Die Beliebtheit von OpenGL ist teilweise wegen der Qualität seiner offiziellen Dokumentation. Der ARB von OpenGL hat eine Reihe von Handbüchern zusammen mit der Spezifizierung veröffentlicht, die aktualisiert worden sind, um Änderungen in der API zu verfolgen. Diese sind fast durch die Farben ihrer Deckel allgemein bekannt:

Das rote Buch

:OpenGL-Programmierhandbuch, 7. Ausgabe. Internationale Standardbuchnummer 0-321-55262-8

:A lesbarer Tutorenkurs und Nachschlagewerk - das ist 'muss' Buch für Programmierer von OpenGL haben.

Das grüne Buch

:OpenGL-Programmierung für das X Fenstersystem. Internationale Standardbuchnummer 0-201-48359-9

:A bestellen über X11 verbindend und ÜBERSÄTTIGUNG vor.

Das blaue Buch

:OpenGL-Bedienungshandbuch, 4. Ausgabe. Internationale Standardbuchnummer 0 321 17383 X

:Essentially ein Hardcopy-Ausdruck der Mann-Seiten für OpenGL.

:Includes ein poster-großes Diagramm der ausfaltbaren Seite, die Struktur einer idealisierten Durchführung von OpenGL zeigend.

Das Alpha-Buch (weißer Deckel)

:OpenGL-Programmierung für Windows 95 und Windows NT. Internationale Standardbuchnummer 0-201-40709-4

:A bestellen über das Verbinden von OpenGL mit Windows von Microsoft vor.

Dann, für OpenGL 2.0 und darüber hinaus:

Das Orange Book

:OpenGL-Schattierungssprache, 3. Ausgabe. Internationale Standardbuchnummer 0-321-63763-1

:A lesbarer Tutorenkurs und Nachschlagewerk für GLSL.

Erweiterungen

Der Standard von OpenGL erlaubt individuellen Verkäufern, zusätzliche Funktionalität durch Erweiterungen zur Verfügung zu stellen, weil neue Technologie geschaffen wird. Erweiterungen können neue Funktionen und neue Konstanten einführen, und können entspannen oder Beschränkungen vorhandener Funktionen von OpenGL entfernen. Jeder Verkäufer hat eine alphabetische Abkürzung, die im Namengeben ihrer neuen Funktionen und Konstanten verwendet wird. Zum Beispiel wird die Abkürzung von Nvidia (NV) im Definieren ihrer Eigentumsfunktion und ihrer Konstante verwendet.

Es kann geschehen, dass mehr als ein Verkäufer bereit ist, dieselbe verlängerte Funktionalität durchzuführen. In diesem Fall wird der Abkürzungs-APP. verwendet. Es kann weiter geschehen, dass der Architektur-Rezensionsausschuss die Erweiterung "segnet". Es wird dann bekannt als eine Standarderweiterung und die Abkürzung ARB wird verwendet. Die erste ARB Erweiterung, war eingeführt in der Version 1.2.1. Im Anschluss an den offiziellen Erweiterungspromotionspfad ist multitexturing nicht mehr eine fakultativ durchgeführte ARB Erweiterung, aber ist ein Teil der Kern-API von OpenGL seit der Version 1.3 gewesen.

Vor dem Verwenden einer Erweiterung muss ein Programm zuerst seine Verfügbarkeit bestimmen, und dann Zeigestöcke zu irgendwelchen neuen Funktionen erhalten, die die Erweiterung definiert. Der Mechanismus, um das zu tun, ist mit der Plattform spezifisch, und Bibliotheken wie GLEW und HEITERKEIT bestehen, um den Prozess zu vereinfachen.

Spezifizierungen für fast alle Erweiterungen können bei der offiziellen Erweiterungsregistrierung gefunden werden.

Verbundene Dienstprogramm-Bibliotheken

Mehrere Bibliotheken werden oben auf oder neben OpenGL gebaut, um Eigenschaften zur Verfügung zu stellen, die in OpenGL selbst nicht verfügbar sind. Bibliotheken wie GLU können mit den meisten Durchführungen von OpenGL gefunden werden, und andere wie ÜBERSÄTTIGUNG und SDL sind mit der Zeit gewachsen und stellen rudimentäre Quer-Plattform-Fenstertechnik und Maus-Funktionalität, und wenn nicht verfügbar, zur Verfügung können leicht heruntergeladen und zu einer Entwicklungsumgebung hinzugefügt werden. Einfache grafische Benutzerschnittstelle-Funktionalität kann in Bibliotheken wie GLUI oder FLTK gefunden werden. Dennoch werden andere Bibliotheken wie GLAux (OpenGL Hilfsbibliothek) missbilligt und sind durch die in populäreren Bibliotheken allgemein verfügbare Funktionalität ersetzt worden, aber der Code mit ihnen besteht noch besonders in einfachen Tutorenkursen. Andere Bibliotheken sind geschaffen worden, um Anwendungsentwicklern von OpenGL ein einfaches Mittel zur Verfügung zu stellen, Erweiterungen von OpenGL und versioning zu führen. Beispiele dieser Bibliotheken schließen GLEW (die Erweiterungszänker-Bibliothek von OpenGL) und HEITERKEIT (OpenGL Leichte Erweiterungsbibliothek) ein.

Zusätzlich zu den oben erwähnten einfachen Bibliotheken anderes höheres Niveau bestehen behaltene Weise-Bibliotheken des Graphen der objektorientierten Szene wie PLIB, OpenSG, OpenSceneGraph und Darsteller von OpenGL. Diese sind als Quer-Plattform freie/offene Quelle oder Eigentumsprogrammierschnittstellen verfügbar, die oben auf OpenGL und Systembibliotheken geschrieben sind, um die Entwicklung von Echtzeitsehsimulierungsanwendungen zu ermöglichen. Andere Lösungsunterstützung passt Programmen von OpenGL für die Virtuelle Realität, die Skalierbarkeit oder den Grafiktraube-Gebrauch entweder durchsichtig wie Chrom oder durch eine Programmierschnittstelle wie Equalizer an.

3D Mesa ist eine freie/offene Quelldurchführung von OpenGL. Es unterstützt reine Software machende sowie zur Verfügung stellende Hardware-Beschleunigung für mehrere 3D-Grafikkarten unter Linux. Bezüglich der Version 8.0, veröffentlicht am 9. Februar 2012, führt es den 3.0 Standard durch, und stellt einige seiner eigenen Erweiterungen für einige Plattformen zur Verfügung.

Bindings

Um seine mehrsprachigen Eigenschaften und Mehrplattform-Eigenschaften zu betonen, sind verschiedener bindings und Häfen für OpenGL auf vielen Sprachen entwickelt worden. Einige Sprachen und ihr bindings sind:

Höhere Niveau-Funktionalität

OpenGL wurde entworfen, um Produktion-Only-zu sein grafisch: Es stellt nur machende Funktionen zur Verfügung. Die Kern-API hat kein Konzept von Fenstertechnik-Systemen, Audio-, zum Schirm, der Tastatur/Maus oder den anderen Eingangsgeräten druckend. Während das einschränkend zuerst scheint, erlaubt es den Code, der die Übergabe tut, um des Betriebssystems völlig unabhängig zu sein, auf dem es läuft, Quer-Plattform-Entwicklung erlaubend. Jedoch ist etwas Integration mit dem heimischen Fenstertechnik-System erforderlich, saubere Wechselwirkung mit dem Gastgeber-System zu erlauben. Das wird durch die folgende Erweiterung APIs durchgeführt:

  • GLX - X11 (einschließlich der Netzdurchsichtigkeit)
  • WGL - Windows von Microsoft
  • CGL - die Integration von Mac OS X. Better mit dem Anwendungsfachwerk von Mac OS X wird durch APIs layered oben auf CGL zur Verfügung gestellt: AGL für Kohlenstoff und NSOpenGL für Kakao.

Zusätzlich stellen die ÜBERSÄTTIGUNG, SDL, SFML und GLFW Bibliotheken Funktionalität für das grundlegende Fenstertechnik-Verwenden OpenGL auf eine tragbare Weise zur Verfügung.

Einige offene Quellquer-Plattform-Werkzeuge, wie GTK +, Qt und WxWidgets, schließen Produkte ein, um Inhalt von OpenGL einzubetten.

Geschichte

In den 1980er Jahren war das Entwickeln der Software, die mit einer breiten Reihe der Grafikhardware fungieren konnte, eine echte Herausforderung. Softwareentwickler haben kundenspezifische Schnittstellen und Treiber für jedes Stück der Hardware geschrieben. Das war teuer und ist auf viel Verdoppelung der Anstrengung hinausgelaufen.

Bis zum Anfang der 1990er Jahre war Silikongrafik (SGI) ein Führer in der 3D-Grafik für Arbeitsplätze. Ihre IRIS GL API wurde modernst betrachtet und ist der De-Facto-Industriestandard geworden, den offenen standardbasierten PHIGS überschattend. Das war, weil IRIS GL leichter betrachtet wurde zu verwenden, und weil es unmittelbare Weise-Übergabe unterstützt hat. Im Vergleich wurde PHIGS schwierig betrachtet zu verwenden und überholt in Bezug auf die Funktionalität.

Die Mitbewerber von SGI (einschließlich Sonne-Mikrosysteme, Hewlett Packard und IBM) sind auch im Stande gewesen zu bringen, um 3D-Hardware auf den Markt zu bringen, die durch zum PHIGS Standard gemachte Erweiterungen unterstützt ist. Das hat der Reihe nach SGI Marktanteil veranlasst schwach zu werden, weil mehr 3D-Grafikhardware-Lieferanten in den Markt eingegangen sind. Um den Markt zu beeinflussen, hat sich SGI dafür entschieden, die API von IrisGL in einen offenen Standard zu verwandeln.

SGI hat gedacht, dass die API von IrisGL selbst nicht passend war, um sich wegen des Genehmigens und der offenen Probleme zu öffnen. Außerdem hatte IrisGL API-Funktionen, die für die 3D-Grafik nicht wichtig waren. Zum Beispiel hat es eine Fenstertechnik, Tastatur und Maus-API teilweise eingeschlossen, weil es entwickelt wurde, bevor das X Fenstersystem und die Systeme von NeWS der Sonne entwickelt wurden.

Außerdem hatte SGI eine Vielzahl von Softwarekunden; indem sie sich zur API von OpenGL geändert haben, haben sie geplant, ihre Kunden geschlossen auf SGI (und IBM) Hardware seit ein paar Jahren zu halten, während die Marktunterstützung für OpenGL reif geworden ist. Inzwischen würde SGI fortsetzen zu versuchen, ihre an die SGI Hardware gebundenen Kunden durch das Entwickeln des fortgeschrittenen und Eigentumsiris-Erfinder- und Iris-Darstellers zu unterstützen, der APIs programmiert.

Infolgedessen hat SGI den Standard von OpenGL veröffentlicht.

OpenGL hat Zugang zur Hardware standardisiert, hat die Entwicklungsverantwortung von Hardware-Schnittstelle-Programmen (manchmal genannt Gerät-Fahrer) Hardware-Herstellern gestoßen, und hat Fenstertechnik-Funktionen an das zu Grunde liegende Betriebssystem delegiert. Mit so vielen verschiedenen Arten der Grafikhardware, sie alle veranlassend, zu sprechen hatte dieselbe Sprache auf diese Weise einen bemerkenswerten Einfluss durch das Geben Softwareentwicklern einer höheren Niveau-Plattform für die Entwicklung der 3D-Software.

1992 hat SGI die Entwicklung von OpenGL architektonischer Rezensionsausschuss (OpenGL ARB), die Unternehmensgruppe geführt, die aufrechterhalten und die Spezifizierung von OpenGL seit kommenden Jahren ausbreiten würde. OpenGL hat sich von entwickelt (und ist im Stil sehr ähnlich) die frühere 3D-Schnittstelle von SGI, IrisGL. Eine der Beschränkungen von IrisGL war, dass er nur Zugang zu durch die zu Grunde liegende Hardware unterstützten Eigenschaften zur Verfügung gestellt hat. Wenn die Grafikhardware keine Eigenschaft unterstützt hat, dann konnte die Anwendung nicht sie verwenden. OpenGL hat dieses Problem überwunden, indem er Unterstützung in der Software für durch die Hardware ununterstützte Eigenschaften zur Verfügung gestellt worden ist, Anwendungen erlaubend, fortgeschrittene Grafik auf relativ Niedrigenergiesystemen zu verwenden.

1994 hat SGI mit der Idee gespielt, etwas Genanntes "OpenGL ++" zu veröffentlichen, der Elemente wie eine API des Szene-Graphen (vermutlich gestützt auf ihrer Darsteller-Technologie) eingeschlossen hat. Die Spezifizierung wurde unter einigen Interessenten in Umlauf gesetzt - aber nie ein Produkt verwandelt.

Microsoft hat Direct3D 1995 veröffentlicht, der schließlich der Hauptmitbewerber von OpenGL geworden ist. Am 17. Dezember 1997 haben Microsoft und SGI das Projekt von Fahrenheit begonnen, das eine gemeinsame Anstrengung mit der Absicht war, die OpenGL und Direct3D-Schnittstellen zu vereinigen (und eine API des Szene-Graphen auch hinzuzufügen). 1998 hat sich Hewlett Packard dem Projekt angeschlossen. Es hat am Anfang etwas Versprechung gezeigt, Ordnung zur Welt der interaktiven 3D-Computergrafik APIs zu bringen, aber wegen Finanzeinschränkungen an SGI, strategischer Gründe an Microsoft und allgemeinen Mangels an der Industrieunterstützung, wurde es 1999 aufgegeben.

Am 31. Juli 2006 wurde es an SIGGRAPH bekannt gegeben, dass die Kontrolle der Spezifizierung von OpenGL zur Gruppe von Khronos passiert würde.

Ausgaben

Ausgaben von OpenGL sind umgekehrt vereinbar. Im Allgemeinen veröffentlichen nach der Version von OpenGL veröffentlichte Grafikkarten Daten, die unter der Unterstützung jene Versionseigenschaften und alle früheren Eigenschaften gezeigt sind. Zum Beispiel unterstützt GeForce 6800, verzeichnet unten, alle Eigenschaften bis dazu, und einschließlich OpenGL 2.0 (können sich spezifische Karten einer Spezifizierung von OpenGL anpassen, aber auswählend bestimmte Eigenschaften nicht unterstützen. Für Details schließt die GPU Kappe-Zuschauer-Software eine Datenbank von Karten und ihren unterstützten Spezifizierungen ein).

OpenGL 1.0

Veröffentlicht im Januar 1992.

Die erste Spezifizierung von OpenGL wurde von Mark Segal und Kurt Akeley veröffentlicht.

OpenGL 1.1

Veröffentlicht im Januar 1997.

OpenGL 1.1 hat sich darauf konzentriert, Texturen und Textur-Formate auf der GPU Hardware zu unterstützen.

Unterstützte GPU Karten: der ganze

OpenGL 1.2

Veröffentlicht am 16. März 1998.

OpenGL 1.2 hat sich darauf konzentriert, Volumen-Texturen zu unterstützen, gepackte Pixel, normales Wiederschuppen, haben Textur-Stichprobenerhebung und Bildverarbeitung festgeklammert/umsäumt.

Unterstützte GPU Karten: Wut 128, Wut 128 GL, Wut XL/XC, Wut 128 Pro, Wut-Wut MAXX, GeForce2 MX, GeForce2 Ti, GeForce2 Pro und alle späteren Karten.

OpenGL 1.2.1

Veröffentlicht am 14. Oktober 1998

OpenGL 1.2.1 war eine geringe Ausgabe nach OpenGL 1.2 (am 16. März 1998), der Mehrtextur oder Textur-Einheiten zur Übergabe-Rohrleitung hinzugefügt hat. Dieses erlaubte Vielfache Texturen, die pro Pixel während rasterization zu vermischen sind.

Unterstützte Karten: Radeon, Radeon Beweglichkeit, Radeon 7500 Beweglichkeit, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9800, GeForce 3, GeForce 4Ti, GeForce FX und alle späteren Karten

OpenGL 1.3

Veröffentlicht am 14. August 2001.

OpenGL 1.3 zusätzliche Unterstützung für die cubemap Textur, multi-texturing, Mehrstichprobenerhebung, und Textur-Einheitsvereinigungsoperationen (tragen bei, verbinden sich, dot3, Grenzklammer).

Unterstützte Karten: Radeon 32/36, Radeon 64/7200, Radeon 7000, Radeo AIW, Radeon 7500, Radeon IGP 320M, Radeon IGP 345M, ES1000, Radeon 8500, Radeon 9000/Pro, Radeon 9100/9200/9250 (Pro & IGP), GeForce 3, GeForce 4Ti, GeForce FX und alle späteren Karten.

OpenGL 1.4

Veröffentlicht am 24. Juli 2002.

OpenGL 1.4 hat Hardware-Beschattungsunterstützung, Nebel-Koordinaten, automatische mipmap Generation und zusätzliche Textur-Weisen hinzugefügt.

Unterstützte Karten: Quadro DCC, Quadro4 380 XGL, Quadro4 500XGL, 550XGL, Quadro4 700XGL, 750XGL, 900XGL, 980XGL, und alle späteren Karten.

OpenGL 1.5

Veröffentlicht am 29. Juli 2003.

OpenGL 1.5 hat Unterstützung für Scheitelpunkt-Puffergegenstände (VBOs), Verstopfungsabfragen und erweiterte beschattende Funktionen hinzugefügt.

Unterstützte Karten: Radeon X800, Radeon 9600, Radeon 9700, Radeon 9800, GeForce FX und alle späteren Karten.

OpenGL 2.0

Veröffentlicht am 7. September 2004.

OpenGL 2.0 wurde durch 3Dlabs ursprünglich konzipiert, um Sorgen zu richten, dass OpenGL stagnierte und an einer starken Richtung Mangel gehabt hat. 3Dlabs hat mehrere Haupthinzufügungen zum Standard vorgeschlagen. Die meisten von diesen wurden zurzeit durch den ARB zurückgewiesen oder haben sich sonst nie in der Form das 3Dlabs vorgeschlagen verwirklicht. Jedoch wurde ihr Vorschlag für einen C-style allmählich übergehende Sprache schließlich vollendet, auf die aktuelle Formulierung von GLSL (OpenGL hinauslaufend, der Sprache, auch Slang Beschattet). Wie die einem Zusammenbau ähnlichen allmählich übergehenden Sprachen, die es ersetzte, hat es dem Programmierer erlaubt, den Scheitelpunkt der festen Funktion und die Bruchstück-Pfeife mit shaders, obwohl dieses Mal geschrieben, auf einer C ähnlichen höheren Programmiersprache zu ersetzen.

Das Design von GLSL war bemerkenswert, um relativ wenige Zugeständnisse zu den Beschränkungen der Hardware dann verfügbar zu machen; dieser hat zurück zur früheren Tradition von OpenGL gehorcht, der ein ehrgeiziges, vorausschauendes Ziel für 3D-Gaspedale setzt, anstatt den Staat der zurzeit verfügbaren Hardware bloß zu verfolgen. Endgültiger OpenGL 2.0 Spezifizierung schließt Unterstützung für GLSL ein.

OpenGL 2.0 hat Unterstützung für eine wahre, GPU-basierte Zusammenbau-Sprache genannt ARB hinzugefügt (entworfen vom Architektur-Rezensionsausschuss), der der Standard für den Scheitelpunkt und das Bruchstück shaders werden würde. Karten, die mit OpenGL 2.0 veröffentlicht sind, waren erst, um benutzerprogrammierbaren shaders anzubieten.

OpenGL 2.1

Veröffentlicht am 2. Juli 2006.

OpenGL 2.1 hat Unterstützung für Pixel-Puffergegenstände (PBOs), sRGB Texturen (gammakorrigierte Texturen), und Nichtquadrat matrices und die Allmählich übergehende Sprachrevision GLSL 1.20 eingeführt.

Unterstützte Karten: Intel HD Graphics, Intel HD Graphics 2000/3000, Radeon HD 2350, GeForce FX (mit verstorbenen Fahrern), GeForce 6 Reihen, GeForce 7 Reihen, Gehen GeForce 7 Reihen, Quadro FX 4000, Quadro FX 350, Quadro FX 550, Quadro FX 560, Quadro FX 1400, Quadro FX 1500, Quadro FX 5500, und alle späteren Karten.

Longs Spitze und OpenGL 3.0 Meinungsverschiedenheit

Vor der Ausgabe von OpenGL 3.0 war die neue Revision als der codename Longs Spitze bekannt. Zur Zeit seiner ursprünglichen Ansage wurde Longs Spitze als die erste Haupt-API-Revision in der Lebenszeit von OpenGL präsentiert. Es hat aus einer Überholung zur Weise bestanden, wie OpenGL arbeitet, nach grundsätzlichen Änderungen zur API verlangend.

Der Entwurf hat eine Änderung eingeführt, um Management einzuwenden. Der GL 2.1 Gegenstand-Modell wurde auf das Zustanddesign von OpenGL gebaut. D. h. um einen Gegenstand zu modifizieren oder es zu verwenden, muss man den Gegenstand zum Zustandsystem binden, dann Modifizierungen zum Staat zu machen oder Funktionsanrufe durchzuführen, die den bestimmten Gegenstand verwenden.

Wegen des Gebrauches von OpenGL eines Zustandsystems müssen Gegenstände veränderlich sein. D. h. die grundlegende Struktur eines Gegenstands kann sich jederzeit ändern, selbst wenn die Übergabe-Rohrleitung diesen Gegenstand asynchron verwendet. Ein Textur-Gegenstand kann vom 2. bis 3D wiederdefiniert werden. Das verlangt, dass irgendwelche Durchführungen von OpenGL einen Grad der Kompliziertheit zum inneren Gegenstand-Management hinzufügen.

Unter der Longs-Maximal-API würde Gegenstand-Entwicklung atomar mit Schablonen werden, um die Eigenschaften eines Gegenstands zu definieren, der mit einem einzelnen Funktionsanruf geschaffen würde. Der Gegenstand konnte dann sofort über vielfache Fäden verwendet werden. Gegenstände würden auch unveränderlich sein; jedoch konnten sie ihren Inhalt ändern lassen und haben aktualisiert. Zum Beispiel konnte eine Textur sein Image ändern, aber seine Größe und Format konnten nicht geändert werden.

Um umgekehrt Vereinbarkeit zu unterstützen, würde gestützte API des alten Staates noch verfügbar sein, aber keine neue Funktionalität würde über die alte API in späteren Versionen von OpenGL ausgestellt. Das hätte Vermächtnis-Codebasen wie die Mehrheit von CAD-Produkten erlaubt, um fortzusetzen, zu laufen, während andere Software dagegen geschrieben oder zur neuen API getragen werden konnte.

Longs Spitze war am Anfang erwartet, im September 2007 unter dem Namen OpenGL 3.0 beendet zu werden, aber die Gruppe von Khronos hat am 30. Oktober bekannt gegeben, dass es in mehrere Probleme geraten war, die es vor der Ausgabe der Spezifizierung hat richten wollen. Infolgedessen wurde die Spekulation verzögert, und die Gruppe von Khronos ist in eine Mediagedächtnislücke bis zur Ausgabe endgültigen OpenGL 3.0 Spekulation eingetreten.

Die Endspezifizierung hat sich viel weniger revolutionär erwiesen als der Longs-Maximalvorschlag. Anstatt die ganze unmittelbare Weise und befestigte Funktionalität (non-shader Weise) zu entfernen, hat die Spekulation sie als missbilligte Eigenschaften eingeschlossen. Das vorgeschlagene Gegenstand-Modell wurde nicht eingeschlossen, und keine Pläne sind bekannt gegeben worden, um es in irgendwelche zukünftigen Revisionen einzuschließen. Infolgedessen ist die API größtenteils dasselbe mit einigen vorhandenen Erweiterungen geblieben, die der Kernfunktionalität fördern werden.

Unter einigen Entwickler-Gruppen hat diese Entscheidung etwas eines Krawalls mit vielen Entwicklern verursacht, die erklären, dass sie auf DirectX aus Protest umschalten würden. Die meisten Beschwerden haben um den Mangel an der Kommunikation durch Khronos zur Entwicklungsgemeinschaft und den vielfachen Eigenschaften gekreist, die verwerfen werden, die günstig von vielen angesehen wurden. Andere Frustrationen haben die Voraussetzung von DirectX 10 Niveau-Hardware eingeschlossen, um OpenGL 3.0 und die Abwesenheit der Geometrie shaders und als Beispiel angeführten Übergabe als Kerneigenschaften zu verwenden.

Andere Quellen haben berichtet, dass die Gemeinschaftsreaktion ganz so, wie ursprünglich präsentiert, mit vielen Verkäufern nicht streng war, die Unterstützung für die Aktualisierung zeigen.

OpenGL 3.0

Veröffentlicht am 11. Juli 2008.

OpenGL 3.0 hat Unterstützung für Rahmenpuffergegenstände, Hardware als Beispiel anführend, Scheitelpunkt-Reihe-Gegenstände (VAOs) und sRGB framebuffers (Gamma 2.2) hinzugefügt. OpenGL 3.0 hat einen Missbilligungsmechanismus eingeführt, die API in zukünftigen Revisionen zu vereinfachen.

Unterstützte Karten: Radeon HD Reihe; GeForce 8, 9, 100 Reihe, 200 Reihe, 300 Reihe, 400 Reihe und 500 Reihe; Intel Sandy Bridge HD Graphics 2000 und 3000.

Eigenschaften:

  • OpenGL, der Sprachrevision 1.30 (GLSL) Beschattet
  • Scheitelpunkt-Reihe wendet ein
  • Flexiblere Gegenstände von Framebuffer
  • 32 Bit (einfache Präzision) Schwimmpunkt-Texturen und machen Puffer
  • 16 Bit (Hälfte der Präzision) Schwimmpunkt-Scheitelpunkt und Pixel-Daten
  • Fähigkeit, Scheitelpunkt-Transformationen in einen Puffer zu machen
  • Textur ordnet
  • 32 Bit (einfache Präzision), die Punkt-Tiefe-Puffer schwimmen lässt, unterstützen

Der volle Gebrauch von OpenGL 3.0 verlangt dasselbe Niveau der Hardware, wie für DirectX 10 Unterstützung erforderlich ist. Verschieden von DirectX 10 verlangt OpenGL 3.0 Windows-Aussicht nicht und kann auf jedem OS verwendet werden, für den die passenden Fahrer zur Verfügung gestellt werden.

Bemerken Sie, dass sich Verwandeln, wird das Feed-Back in OpenGL 3.0 nach NV_transform_feedback nicht modelliert, was bedeutet, dass ein Programm (wieder-) verbunden nach dem Benennen glTransformFeedbackVaryings sein muss.

OpenGL 3.1

Veröffentlicht am 24. März 2009 und aktualisiert am 28. Mai 2009.

OpenGL 3.1 führt eine Reihe von Eigenschaften ein, um die API günstiger zum Gebrauch zusätzlich zu orientierten Eigenschaften der Leistung zu machen:

  • OpenGL, der Sprachrevision 1.40 (GLSL) Beschattet
  • Textur-Puffergegenstände - ein neuer Textur-Typ, der eine eindimensionale Reihe von texels hält
  • Gleichförmige Puffergegenstände für schnelle Daten teilen sich/aktualisieren
  • Unterzeichnete normalisierte Texturen (±1.0 Reihe)
  • Ein Minimum von 16 Textur-Einheiten, die durch den Scheitelpunkt shader zugänglich
sind
  • Primitiver Wiederanfang
  • - Zeichnung von Gegenständen mehrmals durch den Wiedergebrauch von Scheitelpunkt-Daten als Beispiel anführend
  • API von CopyBuffer für die schnelle Datenkopie; verwendet in Verbindung mit OpenCL
  • Rechteckige Texturen

Mit der Ausgabe von OpenGL 3.1 Spezifizierung wurde eine Vereinbarkeitserweiterung auch veröffentlicht, der Entwicklern ermöglicht, auf OpenGL 1 zuzugreifen. X/2. X Funktionalität ist in OpenGL 3.1 umgezogen. Namentlich wird die Vermächtnis-Funktionalität für die breite Linienunterstützung behalten.

Entfernte Vermächtnis-Funktionalität schließt ein:

  • Alle Optionen der festen Funktion
  • Direkte Weise
  • Farbenindex-Weise, d. h. Pixel formatiert mit Farbenpaletten

OpenGL 3.2

Veröffentlicht am 3. August 2009 und aktualisiert am 7. Dezember 2009.

Unterstützte Karten: GeForce 8, GeForce 9, GeForce 100, GeForce 200 und GeForce 300 Reihen, Radeon HD Reihe

Eigenschaften:
  • OpenGL, der Sprachrevision 1.50 (GLSL) Beschattet
  • Geometrie Shader unterstützt
  • BGRA Scheitelpunkt-Bestandteil Einrichtung
  • Shader Bruchstück koordiniert Tagungskontrolle
  • Nahtlose Würfel-Karte, die durchscheint
  • Bruchstück-Tiefe, die festklammert
  • Mehrprobierte Texturen und Textur-Proben für spezifische Beispielpositionen
  • Gleichzeitigkeit und Zaun wenden ein

OpenGL 3.3

Veröffentlicht am 11. März 2010

Unterstützte Karten: GeForce 8, GeForce 9, GeForce 100, GeForce 200 und GeForce 300 Reihen, Radeon HD Reihe

OpenGL 3.3, gleichzeitig veröffentlicht mit OpenGL 4.0 und ergänzt durch eine Reihe neuer ARB Erweiterungen, backports so viel Funktionalität wie möglich von OpenGL 4.0 Spezifizierung für den Gebrauch auf der vorherigen Generation GPU Hardware. Schließt GLSL 3.30 ein.

OpenGL 4.0

Veröffentlicht am 11. März 2010

Unterstützte Karten: Nvidia GeForce 400 Reihen, Nvidia GeForce 500 Reihen, ATI Radeon HD 5000 Reihen, AMD Radeon HD 6000 Reihen, AMD Radeon HD 7000 Reihen

Eigenschaften:
  • OpenGL, der Sprachrevision 4.00 (GLSL) Beschattet
  • Zwei neue shader Stufen, die dem GPU ermöglichen, Geometrie tessellation von der Zentraleinheit abzuladen.
  • Bruchstück pro Probe shaders und programmierbares Bruchstück shader Eingangspositionen für die vergrößerte Übergabe-Qualität und Antialiasing-Flexibilität.
  • Unterprogramme von Shader für die bedeutsam vergrößerte Programmierflexibilität.
  • Die Trennung von Textur-Zustand- und Textur-Daten durch die Hinzufügung einer neuen Objektart hat Probierer-Gegenstände genannt.
  • Zeichnung von Daten, die von OpenGL oder äußerlichem APIs wie OpenCL ohne Zentraleinheitseingreifen erzeugt sind.
  • Das doppelte 64-Bit-Präzisionsschwimmen spitzt shader Operationen und Eingänge/Produktionen für die vergrößerte Übergabe-Genauigkeit und Qualität an.
  • Leistungsverbesserungen; solcher als als Beispiel angeführte Geometrie shaders, hat Reihe und eine neue Zeitmesser-Abfrage als Beispiel angeführt.

OpenGL 4.1

Veröffentlicht am 26. Juli 2010

Unterstützte Karten: Nvidia GeForce 400 Reihen, Nvidia GeForce 500 Reihen, ATI Radeon HD 5000 Reihen, AMD Radeon HD 6000 Reihen, AMD Radeon HD 7000 Reihen

Diese neue Version fügt diese zusätzlichen Eigenschaften zur Spezifizierung hinzu, von denen viele Hilfe es in Übereinstimmung mit denjenigen in Direct3D 11 bringt:

  • OpenGL, der Sprache (GLSL) 4.1 Beschattet
  • Volle Vereinbarkeit mit OpenGL für Eingebettete Systeme (OpenGL ES) 2.0 APIs
  • Reduzierte shaders Kompilationszeiten mit der Fähigkeit, eine Dualzahl für das shader Programm zu fragen und zu laden, wenden ein
  • Die Fähigkeit, Programme individuell zu den fünf programmierbaren Stufen (Scheitelpunkt, Tessellation Kontrolle, Tessellation Einschätzung, Geometrie und Bruchstück) zu binden
  • Verbesserungen zu den allgemeinen 64 Bit, die Punkt schwimmen lassen, haben hinzugefügt in OpenGL 4.0 (64-Bit-Schwimmpunkt-Teileingang für den Scheitelpunkt shader) unterstützt

OpenGL 4.2

Veröffentlicht am 8. August 2011

Unterstützte Karten: Nvidia GeForce 400 Reihen, Nvidia GeForce 500 Reihen, Nvidia GeForce 600 Reihen, ATI Radeon HD 5000 Reihen, AMD Radeon HD 6000 Reihen, AMD Radeon HD 7000 Reihen

  • Die Unterstützung für shaders mit Atomschaltern und Operationen der Last/Ladens/atomaren "gelesen modifiziert schreiben" einem einzelnen Niveau einer Textur.
  • Das Gefangennehmen der GPU-Mosaikgeometrie und die Zeichnung vielfacher Beispiele des Ergebnisses eines umgestalten Feed-Backs, komplizierten Gegenständen zu ermöglichen, effizient wiedereingestellt und wiederholt zu werden.
  • Unterstützung, für eine willkürliche Teilmenge einer komprimierten Textur zu modifizieren, ohne die ganze Textur zum GPU für bedeutende Leistungsverbesserungen wiederherunterladen zu müssen.
  • Unterstützung, um vielfache 8 und 16 Bit-Werte in einen einzelnen 32-Bit-Wert für effizienten shader einzupacken, der mit der bedeutsam reduzierten Speicherlagerung und Bandbreite in einer Prozession geht.

Beispielübergabe

Image:JOGL Refrection Demoscreenshot png|Refraction mit dem programmierbaren Scheitelpunkt shaders

Image:Perl OpenGL fob2.jpg|Animated Texturen mit framebuffer Gegenstände und Programm-Erweiterungen des Scheitelpunkts/Bruchstücks

Image:Synth_video_game_screenshot_C.png|Procedural verzeichnet die Gestaltungsarbeit mit der Anzeige

</Galerie>

</Zentrum>

Siehe auch

  • Liste von Programmen von OpenGL - Liste von populären Spielen und Anwendungen dieser Gebrauch OpenGL
  • ARB (GPU Zusammenbau-Sprache) - die auf niedriger Stufe allmählich übergehende Sprache von OpenGL
  • Cg - die allmählich übergehende Sprache von Nvidia, die mit OpenGL arbeitet
  • GLSL - Öffnen crossplatform allmählich übergehende Sprache auf höchster Ebene, die mit OpenGL arbeitet
  • OpenCL - Öffnen crossplatform GPU allgemeine Zweck-Sprache, die mit OpenGL arbeitet
  • OpenGL ES - OpenGL für eingebettete Systeme
  • OpenVG - 2. Vektor-Grafik-API, die zum Ziel hat, beschleunigte Hardware zu stärken
  • OpenAL - Die Offene Audiobibliothek - hat vorgehabt, gut mit OpenGL zu arbeiten
  • OpenSL ES - eine Andere Audiobibliothek
  • OpenML - Die Offene Mediabibliothek - hat vorgehabt, gut mit OpenGL zu arbeiten
  • Grafikrohrleitung
  • Scheitelpunkt-Puffer wendet ein

OpenGL unterstützen Bibliotheken

  • GLU - Einige zusätzliche Funktionen für Programme von OpenGL.
  • ÜBERSÄTTIGUNG - Das Dienstprogramm-Werkzeug von OpenGL. Verstorben.
  • freeglut - Offene Quellalternative, um ZU ÜBERSÄTTIGEN
  • GLUI - ein GUI Werkzeug, das mit der ÜBERSÄTTIGUNG gemacht ist
  • GLFW - Eine moderne Alternative zur ÜBERSÄTTIGUNG und FreeGLUT.
  • Heiterkeit - OpenGL Leichte Erweiterungsbibliothek.
  • GLEW - die Erweiterungszänker-Bibliothek von OpenGL.
  • GLM - C ++ Mathematik-Werkzeug für OpenGL auf der GLSL Spezifizierung gestützt.
  • JOGL - Java bindings für die API von OpenGL.

Anderer 3D Grafik-APIs

  • Direct3D - Ein Mitbewerber zu OpenGL. Sieh Vergleich von OpenGL und Direct3D.
  • Gleiten - Eine Grafik-API für den Gebrauch auf 3dfx Voodoo-Karten.
  • Mesa 3D - Eine offene Quelldurchführung von OpenGL.
  • Offener Erfinder - C ++ hat Gegenstand 3D-Grafik-API orientiert, die eine höhere Schicht der Programmierung für OpenGL zur Verfügung stellt.
  • RISpec - die offene API von Pixar für die photorealistische Off-Lineübergabe.
  • VirtualGL - OpenGL 3D-Musterserver, der gemachte Images an einen entfernten X Server sendet.

Anderer 2. Grafik-APIs

  • Kairo - eine böse Plattform grafische Vektorattraktion und Textwerkzeug.
  • GTK + - eine böse Plattform grafisches Produkt-Werkzeug.
  • Java 2. - eine böse Plattform-API, um zweidimensionale Grafik zu ziehen.
  • Qt - eine böse Plattform grafisches Produkt-Werkzeug.
  • wxWidgets - eine böse Plattform grafisches Produkt-Werkzeug.
  • SDL - Über die Plattform-Multimediaschicht.
  • Asymptote-Vektor-Grafiksprache - eine Schrift gesteuert, LATEX vereinbar, Sprache für hohe Qualitätsskizzen, Graphen, Diagramme, Geometrie und Schriftsetzen mit der Produktion in PostScript, PDF, SVG und 3D PRC.

Bücher

  • Richard S. Wright, Benjamin Lipchak, Nicholas Haemel, Graham Sellers: OpenGL SuperBible: Umfassender Tutorenkurs und Verweisung, 5. Ausgabe, Addison-Wesley, am 23. Juli 2010, internationale Standardbuchnummer 978-0321712615
  • Dave Shreiner, Khronos OpenGL ARB Arbeitsgruppe: OpenGL, Handbuch Programmierend: Das Offizielle Handbuch zum Lernen von OpenGL, Version 3.0 und 3.1, 7. Ausgabe, Addison-Wesley, am 21. Juli 2009, internationale Standardbuchnummer 978-0321552624
  • Fosner, Ron: Programmierung von OpenGL für Windows 95 und Windows NT, Addison Wesley, internationale Standardbuchnummer 0-201-40709-4
  • Kilgard, Zeichen: OpenGL für das X Fenstersystem, Addison-Wesley, internationale Standardbuchnummer 0-201-48359-9
  • Lengyel, Eric: Der Erweiterungsführer von OpenGL, die Flussmedien von Charles, die internationale Standardbuchnummer 1-58450-294-0
  • Architektur-Rezensionsausschuss von OpenGL, u. a.: Bedienungshandbuch von OpenGL: Das Offizielle Bezugsdokument zu OpenGL, Version 1.4, Addison-Wesley, internationale Standardbuchnummer 0 321 17383 X
  • Architektur-Rezensionsausschuss von OpenGL, u. a.: OpenGL, Handbuch Programmierend: Das Offizielle Handbuch zum Lernen von OpenGL, Version 2, der Fünften Ausgabe, Addison-Wesley, internationale Standardbuchnummer 0-321-33573-2
  • Rost, Randi J.: OpenGL, der Sprache, Addison-Wesley, internationale Standardbuchnummer 0-321-19789-5 Beschattet

Links


Oberon (Programmiersprache) / Bahn
Impressum & Datenschutz