<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>https://wiki.delphigl.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Darkinsanity</id>
		<title>DGL Wiki - Benutzerbeiträge [de]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.delphigl.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Darkinsanity"/>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php/Spezial:Beitr%C3%A4ge/Darkinsanity"/>
		<updated>2026-05-30T13:12:56Z</updated>
		<subtitle>Benutzerbeiträge</subtitle>
		<generator>MediaWiki 1.27.4</generator>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Tutorial_TexFilter&amp;diff=25666</id>
		<title>Tutorial TexFilter</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Tutorial_TexFilter&amp;diff=25666"/>
				<updated>2012-04-08T03:52:40Z</updated>
		
		<summary type="html">&lt;p&gt;Darkinsanity: Als Verb wird &amp;quot;Mipmapping&amp;quot; mit zwei P geschrieben&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Texturen-Feintuning=&lt;br /&gt;
==Einführung==&lt;br /&gt;
&lt;br /&gt;
Hi,&lt;br /&gt;
eigentlich wollte ich ja nur ein Sample über Texture Compression schreiben. Als ich Phobeus davon erzählt habe, hat er mir nahegelgt, doch gleich ein ganzes Tutorial über Texture Filter, etc. zu schreiben. Ich hab mich dazu breitschlagen lassen*g*.&lt;br /&gt;
Es lässt sich nicht ganz umgehen, dass ich hier ein paar Basics zu den Tapeten wiederholen muss, aber ich denke das könnt ihr verkraften.&lt;br /&gt;
&lt;br /&gt;
==Texturen filtern==&lt;br /&gt;
&lt;br /&gt;
Filtern? Ein etwas ungewöhlicher Ausdruck für 3D Grafik. Kaffe kann man filtern, aber Texturen? Texturen sind gewöhnlich Quadrate oder Rechtecke. Wird ein Polygon, über das eine Textur geklebt ist, auf dem Bildschirm angezeigt, so entsprechen oft mehrere Texel einem Pixel(Minification) oder nur Teile eines Texels einem Pixel(Magnification):&lt;br /&gt;
[[Bild:Tutorial_TexFilter_magmin.gif|center]]&lt;br /&gt;
&lt;br /&gt;
Für Beide Fälle stehen zwei Filtermethoden zur Verfügung:&lt;br /&gt;
&lt;br /&gt;
'''GL_NEAREST'''&lt;br /&gt;
:Einem Pixel wird genau das Texel zugewiesen, dass dem Zentrum des Pixels am nächsten liegt. Dies führt häufig zu Bildschirmartefakten, ist aber die schnellere der beiden Varianten.&lt;br /&gt;
'''GL_LINEAR'''&lt;br /&gt;
:Dem Pixel wird der Durchschnitt eines 2x2 Arrays von Texeln, die dem Zentrum des Pixels am nächsten liegen, zugewiesen. Dies führt zu einem weicheren Ergebnis, ist aber auf den meisten OpenGL Geräten langsamer. &lt;br /&gt;
&lt;br /&gt;
Wie wird nun aber ein Filter auf eine Textur angewendet? Nachdem eine Textur mit glBindTexture ausgewählt wurde, werden ihr mittels glTextParameteri die unterschiedlichen Filter zugewisen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;pascal&amp;quot;&amp;gt;    glBindTexture(GL_TEXTURE_2D, DemoTexture);&lt;br /&gt;
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);&lt;br /&gt;
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Beispielt wählt für die DemoTextur den MAGnification Filter nearest und für den MINification Filter linear.&lt;br /&gt;
&lt;br /&gt;
Filterergebnisse einer 8x8 Schachbrettextur(links: linear, rechts: nearest):&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; |[[Bild:Tutorial_TexFilter_8x8checkerlinear.gif|center]]&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; |[[Bild:Tutorial_TexFilter_8x8checkernearest.gif|center]]&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot; | GL_LINEAR&lt;br /&gt;
|align=&amp;quot;center&amp;quot; | GL_NEAREST&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Filterergebnisse einer bunten Textur&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|width=&amp;quot;33%&amp;quot; |[[Bild:Tutorial_TexFilter_colored.gif|center]]&lt;br /&gt;
|width=&amp;quot;34%&amp;quot; |[[Bild:Tutorial_TexFilter_coloredlinear.gif|center]]&lt;br /&gt;
|width=&amp;quot;33%&amp;quot; |[[Bild:Tutorial_TexFilter_colorednearest.gif|center]]&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot; | Ausgangstextur&lt;br /&gt;
|align=&amp;quot;center&amp;quot; | GL_LINEAR&lt;br /&gt;
|align=&amp;quot;center&amp;quot; | GL_NEAREST&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mipmapping==&lt;br /&gt;
&lt;br /&gt;
Mipmaps sind eine Art Level of Detail für Texturen. Die Seitenlänge der Originaltextur wird halbiert und dann als eigenes Bild im Speicher abgelegt. Das gleiche geschieht mit dem halbiertem Bild, bis nur noch eine Textur der größe 1x1 übrig bleibt. Wird nun eine Textur in großer Entfernung angezeigt, wird von der Textur eine kleinere Version gewählt, als wenn die Textur nur wenig Abstand zur Kamera hat. Dadurch kann die Bildqualität erheblich verbessert werden.&lt;br /&gt;
&lt;br /&gt;
Zum erstellen der Mipmaps kommt in OpenGL meist gluBuild2DMipmaps zum Einsatz. Wird DevIL verwendet, hilft einem diese Funktion meist wenig(bei Texture Compression zeige ich wies trotzdem geht), besonders wenn Paletten zum Einsatz kommen. Hier gibt es die Funktion ilutGLBuildMipmaps. Beispielsweise ließen sich mit folgender Funktion Texturen laden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;pascal&amp;quot;&amp;gt;function LoadDevILTexture(Filename : String): TGLUInt;&lt;br /&gt;
var&lt;br /&gt;
  id:TILInt;&lt;br /&gt;
begin&lt;br /&gt;
  {$T-}&lt;br /&gt;
  // Laden eines Texture in den Speicher&lt;br /&gt;
  ilGenImages(1, @id);&lt;br /&gt;
  ilBindImage(id);&lt;br /&gt;
  ilLoadImage(PChar(Filename));&lt;br /&gt;
&lt;br /&gt;
  // Übergeben der Texture an OpenGL&lt;br /&gt;
  Result := ilutGLBindMipmaps;&lt;br /&gt;
  glBindTexture(GL_TEXTURE_2D, Result);&lt;br /&gt;
  {Hier könnten die Filteroptionen stehen}&lt;br /&gt;
&lt;br /&gt;
  // Da OpenGL die Texture hat, können wir sie aus dem Speicher entfernen&lt;br /&gt;
  ilDeleteImages(1, @Id);&lt;br /&gt;
  {$T+}&lt;br /&gt;
end;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Achtung:DevIL muss vor dem erstmaligem Aufruf noch initialisiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;pascal&amp;quot;&amp;gt;ilInit;&lt;br /&gt;
ilutRenderer(IL_OPENGL);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun stehen für den Minification Filter folgende neue Funktionen zur Verfügung: GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST_MIPMAP_LINEAR, GL_LINEAR_MIPMAP_NEAREST und GL_LINEAR_MIPMAP_LINEAR. Ergebnisse in genau dieser Reihenfolge, wobei der Magnification Filter bei allen auf nearest gesetzt ist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; |[[Bild:Tutorial_TexFilter_nearestmipmapnearest.gif|center]]&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; |[[Bild:Tutorial_TexFilter_nearestmipmaplinear.gif|center]]&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot; | GL_NEAREST_MIPMAP_NEAREST&lt;br /&gt;
|align=&amp;quot;center&amp;quot; | GL_NEAREST_MIPMAP_LINEAR&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; |[[Bild:Tutorial_TexFilter_linearmipmapnearest.gif|center]]&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; |[[Bild:Tutorial_TexFilter_linearmipmaplinear.gif|center]]&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot; | GL_LINEAR_MIPMAP_NEAREST	&lt;br /&gt;
|align=&amp;quot;center&amp;quot; | GL_LINEAR_MIPMAP_LINEAR&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Texture Compression==&lt;br /&gt;
&lt;br /&gt;
Hinter Texture Compression versteckt sich etwas sehr interessantes. Um Grafiken für das Web benutzen zu können, werden sie häufig komprimiert(z.B. JPEG), damit sie weniger Platz beanspruchen. Das Gleiche gibt es Unter OpenGl. Hier steht schließlich nicht unendlich viel Platz im Grafikkartenspeicher zur Verfügung. Wenn man also auch hier die Texturen komprimiert, dann kann man wesentlich mehr Texturen unterbringen. Nebenbei wird die Sache auch noch schneller, da beim Zugriff auf die Textur weniger Daten über den Bus laufen müssen. Möglich wird Texture Compression unter OpenGL durch eine Extension namens GL_ARB_TEXTURE_COMPRESSION. Um herauszufinden ob diese Extension vorliegt, müssen wir OpenGL12 anweisen, alle Extensions auszulesen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;pascal&amp;quot;&amp;gt;ClearExtensions;&lt;br /&gt;
ReadExtensions;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gewöhlich geschieht dies nach dem setzten des Pixelformats, etc. aber noch vor dem Laden irgendwelcher Texturen. Ist jetzt GL_ARB_texture_compression auf true gesetzt, können wir Texturkompression verwenden. Wenn an OpenGL die Texturdaten mittels glTexImage2D die Bilddaten übergeben werden, muss nun einfach als internalformat nicht GL_RGB angegeben werden, sondern GL_COMPRESSED_RGB_ARB. Klingt sehr simpel... Für DevIL müssen wir uns noch etwas spezielles einfallen lassen, denn wenn die Daten mithilfe einer Palette dargestellt werden bringen sie wenig. Sie müssen vorher konvertiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;pascal&amp;quot;&amp;gt;    function LoadDevILTextureCompressed(Filename : String): TGLUInt;&lt;br /&gt;
    var&lt;br /&gt;
      id:TILInt;&lt;br /&gt;
      imageInfo : TILInfo;&lt;br /&gt;
      Data : PILUByte;&lt;br /&gt;
      compressed : Integer;&lt;br /&gt;
    begin&lt;br /&gt;
      if not GL_ARB_texture_compression then&lt;br /&gt;
        LoadDevILTexture(Filename);&lt;br /&gt;
      {$T-}&lt;br /&gt;
      // Laden einer Texture in den Speicher&lt;br /&gt;
      ilGenImages(1, @id);&lt;br /&gt;
      ilBindImage(id);&lt;br /&gt;
      ilLoadImage(PChar(Filename));  // Loads into the current bound image&lt;br /&gt;
&lt;br /&gt;
      //Wir brauchen das Bild als IL_RGB oder IL_RGBA&lt;br /&gt;
      ilConvertImage(IL_RGB, IL_UNSIGNED_BYTE);&lt;br /&gt;
&lt;br /&gt;
      // Übergeben der Texture an OpenGL&lt;br /&gt;
      iluGetImageInfo(@ImageInfo);&lt;br /&gt;
      Data := ilGetData();&lt;br /&gt;
&lt;br /&gt;
      glGenTextures(1, @Result);&lt;br /&gt;
      glBindTexture(GL_TEXTURE_2D, Result);&lt;br /&gt;
&lt;br /&gt;
      //einfache textur&lt;br /&gt;
      glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGB_ARB,&lt;br /&gt;
                        ImageInfo.Width, ImageInfo.Height, 0,&lt;br /&gt;
                        GL_RGB, GL_UNSIGNED_BYTE, Data);&lt;br /&gt;
      //oder für mipmaps:&lt;br /&gt;
      //gluBuild2DMipmaps(GL_TEXTURE_2D,&lt;br /&gt;
      //         GL_COMPRESSED_RGB_ARB,&lt;br /&gt;
      //         ImageInfo.Width, ImageInfo.Height,&lt;br /&gt;
      //         GL_RGBA, GL_UNSIGNED_BYTE, Data);&lt;br /&gt;
&lt;br /&gt;
      glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_COMPRESSED_ARB, @compressed);&lt;br /&gt;
      if compressed &amp;lt;&amp;gt; 1 then&lt;br /&gt;
        MessageDlg('Texture wurde nicht komprimiert', mtError, [mbOk], 0);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      {Filteroptionen}&lt;br /&gt;
&lt;br /&gt;
      ilDeleteImages(1, @Id);&lt;br /&gt;
      {$T+}&lt;br /&gt;
    end;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
IL_RGB und GL_RGB können bei bedarf durch IL_RGBA und GL_RGBA ausgetauscht werden. Werden Mipmaps benötigt, so muss einfach vor gluBuild2DMipmaps die Kommentare gelöscht werden. Dem geübten Auge werden sicherlich die komprimierten Schmankerl auffallen, bewegt sich aber die Szenerie sehr schnell, wird es niemandem mehr auffallen:&lt;br /&gt;
[[Bild:Tutorial_TexFilter_compressed.gif|center]]&lt;br /&gt;
&lt;br /&gt;
Euer&lt;br /&gt;
:'''Delphic'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Tutorial|TexturFiltering]]&lt;br /&gt;
&lt;br /&gt;
{{TUTORIAL_NAVIGATION|[[Tutorial Objektselektion]]| [[Tutorial Kamera1]]}}&lt;/div&gt;</summary>
		<author><name>Darkinsanity</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Konvex&amp;diff=25662</id>
		<title>Konvex</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Konvex&amp;diff=25662"/>
				<updated>2012-04-05T20:16:58Z</updated>
		
		<summary type="html">&lt;p&gt;Darkinsanity: Ergänzung der Definition konvex/konkav&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= konvexe und konkave Polygone =&lt;br /&gt;
&lt;br /&gt;
== Unterschiede ==&lt;br /&gt;
&lt;br /&gt;
Konvexe und konkave Polygone unterscheiden sich in einem essenziell wichtigen Punkt. Wenn man eine Linie zwischen einem Eckpunkt und dessen übernächsten Nachbarn zieht, liegen bei konvexen Polygonen der übersprungene Eckpunkt immer außerhalb des &amp;quot;neuen&amp;quot; Polygons. Zieht man eine solche Linie für alle Eckpunkte eines Polygons und liegt mindestens ein übersprungener Punkt im &amp;quot;neuen&amp;quot; Polygon, so ist das Polygon konkav.&lt;br /&gt;
Wenn der übersprungene Eckpunkt '''auf''' der neu entstandenen Kante liegt, gilt das Polygone auch dann als konvex.&lt;br /&gt;
&lt;br /&gt;
Eine andere einfache Unterscheidungsregel ist die folgende: Betrachtet man an jedem Eckpunkt des Polygons den Innenwinkel, so beträgt dieser bei konvexen Polygonen maximal 180°. Ist auch nur ein Innenwinkel des Polygons größer als 180°, so ist das Polygon konkav.&lt;br /&gt;
&lt;br /&gt;
== Skizze ==&lt;br /&gt;
&lt;br /&gt;
===Konvex===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Konvex normal.png|framed|center|Ein konvexes Polygon]]&lt;br /&gt;
&lt;br /&gt;
===Konkav===&lt;br /&gt;
{|width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|[[Bild:Konvex konvex.png|framed|right|Der markierte Eckpunkt macht das Polygon konkav.]] &lt;br /&gt;
|[[Bild:Konvex konvex2.png|framed|left|Wird er übersprungen, liegt er im neu entstandenen Polygon.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Bedeutung===&lt;br /&gt;
Die Klassifizierung von Polygonen ist z.B. bei der [[Tesselierung]] von Bedeutung.&lt;br /&gt;
&lt;br /&gt;
Auch die standard OpenGL Zeichenroutine (basierend auf [[glBegin]]) zeichnet ausschließlich konvexe Polygone richtig. Die falsche Darstellung äußert sich meist darin, dass eine zusätzliche Kante vom letzten Punkt zum ersten Punkt des Polygons gezogen wird.&lt;/div&gt;</summary>
		<author><name>Darkinsanity</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Konvex&amp;diff=25661</id>
		<title>Konvex</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Konvex&amp;diff=25661"/>
				<updated>2012-04-05T20:12:59Z</updated>
		
		<summary type="html">&lt;p&gt;Darkinsanity: /* Unterschiede */ Definition für konkave Polygone war nicht korrekt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= konvexe und konkave Polygone =&lt;br /&gt;
&lt;br /&gt;
== Unterschiede ==&lt;br /&gt;
&lt;br /&gt;
Konvexe und konkave Polygone unterscheiden sich in einem essenziell wichtigen Punkt. Wenn man eine Linie zwischen einem Eckpunkt und dessen übernächsten Nachbarn zieht, liegen bei konvexen Polygonen der übersprungene Eckpunkt immer außerhalb des &amp;quot;neuen&amp;quot; Polygons. Zieht man eine solche Linie für alle Eckpunkte eines Polygons und liegt mindestens ein übersprungener Punkt im &amp;quot;neuen&amp;quot; Polygon, so ist das Polygon konkav.&lt;br /&gt;
&lt;br /&gt;
Wenn der übersprungene Eckpunkt '''auf''' der neu entstandenen Kante liegt, gilt das Polygone auch dann als konvex.&lt;br /&gt;
&lt;br /&gt;
== Skizze ==&lt;br /&gt;
&lt;br /&gt;
===Konvex===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Konvex normal.png|framed|center|Ein konvexes Polygon]]&lt;br /&gt;
&lt;br /&gt;
===Konkav===&lt;br /&gt;
{|width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|[[Bild:Konvex konvex.png|framed|right|Der markierte Eckpunkt macht das Polygon konkav.]] &lt;br /&gt;
|[[Bild:Konvex konvex2.png|framed|left|Wird er übersprungen, liegt er im neu entstandenen Polygon.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Bedeutung===&lt;br /&gt;
Die Klassifizierung von Polygonen ist z.B. bei der [[Tesselierung]] von Bedeutung.&lt;br /&gt;
&lt;br /&gt;
Auch die standard OpenGL Zeichenroutine (basierend auf [[glBegin]]) zeichnet ausschließlich konvexe Polygone richtig. Die falsche Darstellung äußert sich meist darin, dass eine zusätzliche Kante vom letzten Punkt zum ersten Punkt des Polygons gezogen wird.&lt;/div&gt;</summary>
		<author><name>Darkinsanity</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=wglSwapIntervalEXT&amp;diff=25445</id>
		<title>wglSwapIntervalEXT</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=wglSwapIntervalEXT&amp;diff=25445"/>
				<updated>2012-01-03T21:32:14Z</updated>
		
		<summary type="html">&lt;p&gt;Darkinsanity: Die Seite wurde neu angelegt: „= wglSwapIntervalEXT =    == Name == '''wglSwapIntervalEXT''' - Setzt ein minimales Intervall für Buffer-Swaps.  == Delphi-Spezifikation ==  function '''wglSwapI…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= wglSwapIntervalEXT =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Name ==&lt;br /&gt;
'''wglSwapIntervalEXT''' - Setzt ein minimales Intervall für Buffer-Swaps.&lt;br /&gt;
&lt;br /&gt;
== Delphi-Spezifikation ==&lt;br /&gt;
 function '''wglSwapIntervalEXT'''(''interval'': PGLint): PGLboolean;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Parameter ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; rules=&amp;quot;all&amp;quot;&lt;br /&gt;
! ''interval'' &lt;br /&gt;
| Die Mindestanzahl der Refreshes, die bei einem Buffer-Swap gewartet werden soll.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beschreibung == &lt;br /&gt;
'''wglSwapIntervalEXT''' setzt die Mindestanzahl der Refreshes, die beim nächsten Buffer-Swap, ausgelöst durch [[SwapBuffers]], abgewartet werden sollen.&lt;br /&gt;
Durch die Angabe eins Intervalls, welches größer als Null ist, werden die Buffer-Swaps mit den Refreshes synchronisiert. Dieses erwünschte Verhalten wird als Vsync bezeichnet. Ist das angegebene Invervall höher als das von der Implementation maximal erlaubte Intervall, wird es ohne weiteres Feedback auf den nächstgelegenen unterstützten Wert gesetzt.&lt;br /&gt;
Wird ein Intervall von Null angegeben, werden die Buffer-Swaps nicht synchronisiert, d.h. Vsync ist ausgeschaltet.&lt;br /&gt;
Die Funktion liefert TRUE zurück, wenn der Vorgang erfolgreich war, andernfalls liefert sie FALSE zurück.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
Vsync einschalten:&lt;br /&gt;
  wglSwapIntervalEXT(1);&lt;br /&gt;
&lt;br /&gt;
Vsync ausschalten:&lt;br /&gt;
  wglSwapIntervalEXT(0);&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
Die Funktion '''wglSwapIntervalEXT''' ist Teil der '''WGL_EXT_swap_control'''-Extension und kein Bestandteil der [[WGL]]-Kernbefehle. Falls in der durch die Funktion [[wglGetExtensionsStringARB]] zurückgegebenen Zeichenkette '''WGL_EXT_swap_control''' enthalten ist, dann wird die Extension '''WGL_EXT_swap_control''' unterstützt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen ==&lt;br /&gt;
'''ERROR_INVALID_DATA''' wird generiert, wenn ''Intervall'' kleiner als Null ist.&lt;br /&gt;
&lt;br /&gt;
'''ERROR_DC_NOT_FOUND''' wird generiert, wenn der Device-Kontext für den aufrufenden Thread nicht gefunden werden konnte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:WGL]]&lt;/div&gt;</summary>
		<author><name>Darkinsanity</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=glXSwapIntervalEXT&amp;diff=25444</id>
		<title>glXSwapIntervalEXT</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=glXSwapIntervalEXT&amp;diff=25444"/>
				<updated>2012-01-03T21:26:31Z</updated>
		
		<summary type="html">&lt;p&gt;Darkinsanity: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= glXSwapIntervalEXT =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Name ==&lt;br /&gt;
'''glXSwapIntervalEXT''' - Setzt ein minimales Intervall für Buffer-Swaps.&lt;br /&gt;
&lt;br /&gt;
== Delphi-Spezifikation ==&lt;br /&gt;
 procedure '''glXSwapIntervalEXT'''(''dpy'': PDisplay; ''drawable'': GLXDrawable; ''interval'': PGLint);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Parameter ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; rules=&amp;quot;all&amp;quot;&lt;br /&gt;
! ''dpy'' &lt;br /&gt;
| Gibt die Verbindung zum X-Server an&lt;br /&gt;
|-&lt;br /&gt;
! ''drawable'' &lt;br /&gt;
| WRITE ME&lt;br /&gt;
|-&lt;br /&gt;
! ''interval'' &lt;br /&gt;
| Die Mindestanzahl der Refreshes, die bei einem Buffer-Swap gewartet werden soll.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beschreibung == &lt;br /&gt;
'''glXSwapIntervalEXT''' setzt die Mindestanzahl der Refreshes, die beim nächsten Buffer-Swap, ausgelöst durch [[glXSwapBuffers]], abgewartet werden sollen.&lt;br /&gt;
Durch die Angabe eins Intervalls, welches größer als Null ist, werden die Buffer-Swaps mit den Refreshes synchronisiert. Dieses erwünschte Verhalten wird als Vsync bezeichnet. Ist das angegebene Invervall höher als das von der Implementation maximal erlaubte Intervall, wird es ohne weiteres Feedback auf den nächstgelegenen unterstützten Wert gesetzt.&lt;br /&gt;
Wird ein Intervall von Null angegeben, werden die Buffer-Swaps nicht synchronisiert, d.h. Vsync ist ausgeschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
Vsync einschalten:&lt;br /&gt;
  glXSwapIntervalEXT(dpy, glXGetCurrentDrawable(), 1);&lt;br /&gt;
&lt;br /&gt;
Vsync ausschalten:&lt;br /&gt;
  glXSwapIntervalEXT(dpy, glXGetCurrentDrawable(), 0);&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
Die Funktion '''glXSwapIntervalEXT''' ist Teil der '''GLX_EXT_swap_control'''-Extension und kein Bestandteil der [[GLX]]-Kernbefehle. Falls in der durch die Funktion [[glXQueryExtensionsString]] zurückgegebenen Zeichenkette '''GLX_EXT_swap_control''' enthalten ist, dann wird die Extension '''GLX_EXT_swap_control''' unterstützt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen ==&lt;br /&gt;
'''GLXBadValue''' wird generiert, wenn ''Intervall'' kleiner als Null ist.&lt;br /&gt;
&lt;br /&gt;
'''GLXBadWindow''' wird generiert, wenn es sich bei ''drawable'' nicht um ein gültiges GLXDrawable-Objekt handelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
[[glXCreateContext]], [[glXQueryVersion]], [[glXQueryExtensionsString]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:GLX]]&lt;/div&gt;</summary>
		<author><name>Darkinsanity</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=glXSwapIntervalEXT&amp;diff=25443</id>
		<title>glXSwapIntervalEXT</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=glXSwapIntervalEXT&amp;diff=25443"/>
				<updated>2012-01-03T21:21:42Z</updated>
		
		<summary type="html">&lt;p&gt;Darkinsanity: /* Name */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= glXSwapIntervalEXT =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Name ==&lt;br /&gt;
'''glXSwapIntervalEXT''' - Setzt ein minimales Intervall für Buffer-Swaps.&lt;br /&gt;
&lt;br /&gt;
== Delphi-Spezifikation ==&lt;br /&gt;
 procedure '''glXSwapIntervalEXT'''(''dpy'': PDisplay; ''drawable'': GLXDrawable; ''interval'': PGLint);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Parameter ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; rules=&amp;quot;all&amp;quot;&lt;br /&gt;
! ''dpy'' &lt;br /&gt;
| Gibt die Verbindung zum X-Server an&lt;br /&gt;
|-&lt;br /&gt;
! ''drawable'' &lt;br /&gt;
| WRITE ME&lt;br /&gt;
|-&lt;br /&gt;
! ''interval'' &lt;br /&gt;
| Die Mindestanzahl der Refreshes, die bei einem Buffer-Swap gewartet werden soll.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beschreibung == &lt;br /&gt;
'''glXSwapIntervalEXT''' setzt die Mindestanzahl der Refreshes, die beim nächsten Buffer-Swap, ausgelöst durch [[glXSwapBuffers]], abgewartet werden sollen.&lt;br /&gt;
Durch die Angabe eins Intervalls, welches größer als Null ist, werden die Buffer-Swaps mit den Refreshes synchronisiert. Dieses erwünschte Verhalten wird als Vsync bezeichnet. Ist das angegebene Invervall höher als das von der Implementation maximal erlaubte Intervall, wird es ohne weiteres Feedback auf den nächstgelegenen unterstützten Wert gesetzt.&lt;br /&gt;
Wird ein Intervall von Null angegeben, werden die Buffer-Swaps nicht synchronisiert, d.h. Vsync ist ausgeschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
Vsync einschalten:&lt;br /&gt;
  glXSwapIntervalEXT(dpy, glXGetCurrentDrawable(), 1);&lt;br /&gt;
&lt;br /&gt;
Vsync ausschalten:&lt;br /&gt;
  glXSwapIntervalEXT(dpy, glXGetCurrentDrawable(), 0);&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
Die Funktion '''glXSwapIntervalEXT''' ist Teil der '''EXT_swap_control'''-Extension und kein Bestandteil der [[GLX]]-Kernbefehle. Falls in der durch die Funktion [[glXQueryExtensionsString]] zurückgegebenen Zeichenkette '''EXT_swap_control''' enthalten ist, dann wird die Extension '''EXT_swap_control''' unterstützt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen ==&lt;br /&gt;
'''GLXBadValue''' wird generiert, wenn ''Intervall'' kleiner als Null ist.&lt;br /&gt;
&lt;br /&gt;
'''GLXBadWindow''' wird generiert, wenn es sich bei ''drawable'' nicht um ein gültiges GLXDrawable-Objekt handelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
[[glXCreateContext]], [[glXQueryVersion]], [[glXQueryExtensionsString]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:GLX]]&lt;/div&gt;</summary>
		<author><name>Darkinsanity</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=glXSwapIntervalEXT&amp;diff=25442</id>
		<title>glXSwapIntervalEXT</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=glXSwapIntervalEXT&amp;diff=25442"/>
				<updated>2012-01-03T21:21:08Z</updated>
		
		<summary type="html">&lt;p&gt;Darkinsanity: /* Beispiel */ kleiner Fehler&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= glXSwapIntervalEXT =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Name ==&lt;br /&gt;
'''glXSwapIntervalEXT''' - Setzt ein minimales Intervall für swaps.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Delphi-Spezifikation ==&lt;br /&gt;
 procedure '''glXSwapIntervalEXT'''(''dpy'': PDisplay; ''drawable'': GLXDrawable; ''interval'': PGLint);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Parameter ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; rules=&amp;quot;all&amp;quot;&lt;br /&gt;
! ''dpy'' &lt;br /&gt;
| Gibt die Verbindung zum X-Server an&lt;br /&gt;
|-&lt;br /&gt;
! ''drawable'' &lt;br /&gt;
| WRITE ME&lt;br /&gt;
|-&lt;br /&gt;
! ''interval'' &lt;br /&gt;
| Die Mindestanzahl der Refreshes, die bei einem Buffer-Swap gewartet werden soll.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beschreibung == &lt;br /&gt;
'''glXSwapIntervalEXT''' setzt die Mindestanzahl der Refreshes, die beim nächsten Buffer-Swap, ausgelöst durch [[glXSwapBuffers]], abgewartet werden sollen.&lt;br /&gt;
Durch die Angabe eins Intervalls, welches größer als Null ist, werden die Buffer-Swaps mit den Refreshes synchronisiert. Dieses erwünschte Verhalten wird als Vsync bezeichnet. Ist das angegebene Invervall höher als das von der Implementation maximal erlaubte Intervall, wird es ohne weiteres Feedback auf den nächstgelegenen unterstützten Wert gesetzt.&lt;br /&gt;
Wird ein Intervall von Null angegeben, werden die Buffer-Swaps nicht synchronisiert, d.h. Vsync ist ausgeschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
Vsync einschalten:&lt;br /&gt;
  glXSwapIntervalEXT(dpy, glXGetCurrentDrawable(), 1);&lt;br /&gt;
&lt;br /&gt;
Vsync ausschalten:&lt;br /&gt;
  glXSwapIntervalEXT(dpy, glXGetCurrentDrawable(), 0);&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
Die Funktion '''glXSwapIntervalEXT''' ist Teil der '''EXT_swap_control'''-Extension und kein Bestandteil der [[GLX]]-Kernbefehle. Falls in der durch die Funktion [[glXQueryExtensionsString]] zurückgegebenen Zeichenkette '''EXT_swap_control''' enthalten ist, dann wird die Extension '''EXT_swap_control''' unterstützt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen ==&lt;br /&gt;
'''GLXBadValue''' wird generiert, wenn ''Intervall'' kleiner als Null ist.&lt;br /&gt;
&lt;br /&gt;
'''GLXBadWindow''' wird generiert, wenn es sich bei ''drawable'' nicht um ein gültiges GLXDrawable-Objekt handelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
[[glXCreateContext]], [[glXQueryVersion]], [[glXQueryExtensionsString]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:GLX]]&lt;/div&gt;</summary>
		<author><name>Darkinsanity</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=glXSwapIntervalEXT&amp;diff=25441</id>
		<title>glXSwapIntervalEXT</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=glXSwapIntervalEXT&amp;diff=25441"/>
				<updated>2012-01-03T21:20:48Z</updated>
		
		<summary type="html">&lt;p&gt;Darkinsanity: Die Seite wurde neu angelegt: „= glXSwapIntervalEXT =    == Name == '''glXSwapIntervalEXT''' - Setzt ein minimales Intervall für swaps.    == Delphi-Spezifikation ==  procedure '''glXSwapInter…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= glXSwapIntervalEXT =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Name ==&lt;br /&gt;
'''glXSwapIntervalEXT''' - Setzt ein minimales Intervall für swaps.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Delphi-Spezifikation ==&lt;br /&gt;
 procedure '''glXSwapIntervalEXT'''(''dpy'': PDisplay; ''drawable'': GLXDrawable; ''interval'': PGLint);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Parameter ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; rules=&amp;quot;all&amp;quot;&lt;br /&gt;
! ''dpy'' &lt;br /&gt;
| Gibt die Verbindung zum X-Server an&lt;br /&gt;
|-&lt;br /&gt;
! ''drawable'' &lt;br /&gt;
| WRITE ME&lt;br /&gt;
|-&lt;br /&gt;
! ''interval'' &lt;br /&gt;
| Die Mindestanzahl der Refreshes, die bei einem Buffer-Swap gewartet werden soll.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beschreibung == &lt;br /&gt;
'''glXSwapIntervalEXT''' setzt die Mindestanzahl der Refreshes, die beim nächsten Buffer-Swap, ausgelöst durch [[glXSwapBuffers]], abgewartet werden sollen.&lt;br /&gt;
Durch die Angabe eins Intervalls, welches größer als Null ist, werden die Buffer-Swaps mit den Refreshes synchronisiert. Dieses erwünschte Verhalten wird als Vsync bezeichnet. Ist das angegebene Invervall höher als das von der Implementation maximal erlaubte Intervall, wird es ohne weiteres Feedback auf den nächstgelegenen unterstützten Wert gesetzt.&lt;br /&gt;
Wird ein Intervall von Null angegeben, werden die Buffer-Swaps nicht synchronisiert, d.h. Vsync ist ausgeschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
Vsync einschalten:&lt;br /&gt;
  glXSwapIntervalEXT(dpy, glXGetCurrentDrawable(), 1);&lt;br /&gt;
&lt;br /&gt;
Vsync ausschalten:&lt;br /&gt;
  glXSwapIntervalEXT(dpy, glXGetCurrentDrawable(), 1);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
Die Funktion '''glXSwapIntervalEXT''' ist Teil der '''EXT_swap_control'''-Extension und kein Bestandteil der [[GLX]]-Kernbefehle. Falls in der durch die Funktion [[glXQueryExtensionsString]] zurückgegebenen Zeichenkette '''EXT_swap_control''' enthalten ist, dann wird die Extension '''EXT_swap_control''' unterstützt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen ==&lt;br /&gt;
'''GLXBadValue''' wird generiert, wenn ''Intervall'' kleiner als Null ist.&lt;br /&gt;
&lt;br /&gt;
'''GLXBadWindow''' wird generiert, wenn es sich bei ''drawable'' nicht um ein gültiges GLXDrawable-Objekt handelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
[[glXCreateContext]], [[glXQueryVersion]], [[glXQueryExtensionsString]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:GLX]]&lt;/div&gt;</summary>
		<author><name>Darkinsanity</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=glDeleteQueries&amp;diff=25440</id>
		<title>glDeleteQueries</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=glDeleteQueries&amp;diff=25440"/>
				<updated>2012-01-03T20:59:28Z</updated>
		
		<summary type="html">&lt;p&gt;Darkinsanity: /* Delphi-Spezifikation */ Semikolon&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= glDeleteQueries =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Name ==&lt;br /&gt;
'''glDeleteQueries''' - Löscht [[Occlusion Query]]-Objekte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Delphi-Spezifikation ==&lt;br /&gt;
 procedure '''glDeleteQueries'''(''n'': GLsizei; ''ids'': PGLuint);&lt;br /&gt;
&lt;br /&gt;
== Parameter ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; rules=&amp;quot;all&amp;quot;&lt;br /&gt;
! ''n'' &lt;br /&gt;
| Anzahl der Query-Objektnamen, die gelöscht werden sollen.&lt;br /&gt;
|-&lt;br /&gt;
! ''ids'' &lt;br /&gt;
| Zeiger auf ein Array, welches mit den zu löschenden Query-Objektnamen gefüllt ist.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beschreibung == &lt;br /&gt;
'''glDeleteQueries''' versucht alle Occlusion-Query-Objekte zu löschen, die im ''n''-elementigen Feld ''ids'' definiert wurden. &lt;br /&gt;
&lt;br /&gt;
Nachdem ein Query-Objekt gelöscht wurde, ist dessen Name unbenutzt und kann zur Erzeugung neuer Query-Objekte verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Unbenutzte Namen im Feld ''ids'' werden beim Löschen ignoriert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
'''glDeleteQueries''' ist erst ab OpenGL 1.5 oder höher verfügbar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen ==&lt;br /&gt;
'''GL_INVALID_OPERATION''' wird generiert, wenn '''glDeleteQueries''' innerhalb eines [[glBegin]]-[[glEnd]]-Blocks aufgerufen wurde.&lt;br /&gt;
&lt;br /&gt;
'''GL_INVALID_OPERATION''' wird generiert, falls eine beliebige Query aktiv ist (d.h. Query wurde mit [[glBeginQuery]] gestartet, aber noch nicht mit [[glEndQuery]] beendet).&lt;br /&gt;
&lt;br /&gt;
'''GL_INVALID_VALUE''' wird generiert, falls ''n'' negativ ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zugehörige Wertrückgaben ==&lt;br /&gt;
[[glGetQuery]] mit Token '''GL_CURRENT_QUERY''' gibt die momentan aktive Query-ID zurück.&lt;br /&gt;
&lt;br /&gt;
[[glGetQuery]] mit Token '''GL_QUERY_COUNTER_BITS''' gibt die Anzahl der Bits des Occlusion-Query-Zählers zurück.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
[[glBeginQuery]], [[glEndQuery]], [[glGenQueries]], [[glGetQuery]], [[glGetQueryObject]], [[glIsQuery]], &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:GL|DeleteQueries]]&lt;br /&gt;
[[Kategorie:GL1.5|DeleteQueries]]&lt;br /&gt;
[[Kategorie:GL3]]&lt;/div&gt;</summary>
		<author><name>Darkinsanity</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=OpenGL-Funktions%C3%BCbersicht&amp;diff=25438</id>
		<title>OpenGL-Funktionsübersicht</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=OpenGL-Funktions%C3%BCbersicht&amp;diff=25438"/>
				<updated>2011-12-18T21:00:48Z</updated>
		
		<summary type="html">&lt;p&gt;Darkinsanity: glXSwapInterval ergänzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:Opengl_logo.png|right|200px]]&lt;br /&gt;
== Hinweise für Helfer ==&lt;br /&gt;
&lt;br /&gt;
=== Was hier hinein gehört ===&lt;br /&gt;
&lt;br /&gt;
Um eine Funktionsübersicht aller OpenGL Funktionen zu erreichen die inhaltlich korrekt ist, sollten die [http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL.tar.gz  orginal Spezifikationen] von OpenGL.org übersetzt werden([[Link#OpenGL_Funktionen|Alternative Quellen]]).  &lt;br /&gt;
&lt;br /&gt;
Allerdings sind hier auch glu-/wgl- und glx-Funktionen erlaubt. Konstanten bitte nicht hier im Inhaltsverzeichnis einfügen, genausowenig wie [[OpenGL-Extensions]].&lt;br /&gt;
&lt;br /&gt;
Die Funktionen sind bereits nach Gruppen sortiert (GL/GLU/etc.). Sollten Funktionen noch nicht in der Übersicht auftauchen, welche aber definitiv existieren, können diese nachgetragen werden. Funktionen die es in verschiedenen Ausprägungen gibt, werden ohne Parameterangabe eingetragen (also glVertex statt glVertex3f).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bitte haltet euch bei der Formatierung der Befehlsbeschreibung an die [[Funktionsvorlage]] (ich führe hier mal glBegin als Beispiel an), und erklärt nicht mehr als nötig. &lt;br /&gt;
Wenn ihr also einen Befehl habt der etwas mit VertexArrays zu tun hat, dann gehört dort '''nicht''' hinein was ein VertexArray ist oder bringt. Das gehört dann nach [[Techniken und Algorithmen]] oder [[Hintergrundwissen]] (je nach Thematik) und sollte dann in der Funktionsbeschreibung als ''interner Link'' untergebracht werden.&lt;br /&gt;
&lt;br /&gt;
'''Zu aller erst sollte die Orginalspezifikation übersetzt werden''' und erst dann eigene Hinweise untergebracht werden (z.B. Erfahrungen, typische Fehler etc.)&lt;br /&gt;
&lt;br /&gt;
===Artikel-Vorlage===&lt;br /&gt;
'''Wichtiger Hinweis ''' : Bei der Funktionsübersicht ist v.a. eine einheitliche Gliederung der Artikel wichtig. Deshalb haltet euch bitte an '''[[Funktionsvorlage|folgende Vorlage]]'''!&lt;br /&gt;
&lt;br /&gt;
===Kategorisieren von Artikeln===&lt;br /&gt;
Das Wiki ermöglicht es einen Artikel einer Kategorie zuzuordnen. Diese Möglichkeit sollte von Artikelschreibern genutzt werden.&lt;br /&gt;
Man ordnet einen Artikel einer Kategorie zu, in dem man '''am Ende des Artikels einen Link zu der Kategrie erstellt''' der er zugeordnet werden soll:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+Beispiel&lt;br /&gt;
|&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[[Kategorie:GL|Name ohne &amp;quot;gl&amp;quot;]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das sind die neuen Kategorien:&lt;br /&gt;
*[[:Kategorie:GL]]&lt;br /&gt;
*[[:Kategorie:GLU]]&lt;br /&gt;
*[[:Kategorie:GLX]]&lt;br /&gt;
*[[:Kategorie:WGL]]&lt;br /&gt;
&lt;br /&gt;
Falls die Funktion bereits zum GL-Kern gehört kommt noch folgender Eintrag hinzu: &amp;lt;nowiki&amp;gt;[[Kategorie:GLx.x]]&amp;lt;/nowiki&amp;gt; wobei das x.x durch die GL-Versionsnummer (z.B. &amp;quot;1.2&amp;quot; oder &amp;quot;2.0&amp;quot;), seit dem die Funktion dabei ist, ersetzt wird.&lt;br /&gt;
&lt;br /&gt;
== [[:Kategorie:GL|GL]] ==&lt;br /&gt;
Abkürzung für '''G'''raphics '''L'''ibrary, hierunter fallen alle Funktionen die direkter Bestandteil (entweder als Kernfunktion oder über Extensions) der OpenGL sind.&lt;br /&gt;
Hartnäckige Gerüchte, '''GL''' stünde für Glide und somit OpenGL für Open Glide, sind schlichtweg falsch, erfreuen sich jedoch immernoch großer Beliebtheit.&lt;br /&gt;
&lt;br /&gt;
=== Versionsspezifische Listen ===&lt;br /&gt;
Hier findet ihre Listen von Funktionen die in einer bestimmten OpenGL Version verfügbar sind. Wenn ihr also z.B. ein Programm für OpenGL3.0 schreiben wollt, dürft ihr nur die Funktionen verwenden, die in der 3.0-Liste enthalten sind.&lt;br /&gt;
&lt;br /&gt;
*[[OpenGL2.1-Funktionsübersicht]]&lt;br /&gt;
*[[OpenGL3-Funktionsübersicht]]&lt;br /&gt;
*[[OpenGL4-Funktionsübersicht]]&lt;br /&gt;
&lt;br /&gt;
=== A ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glAccum]]''' || {{Version_1_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glActiveStencilFaceEXT]]''' || - || - || [[glActiveStencilFaceEXT]] || - &lt;br /&gt;
|-&lt;br /&gt;
|'''[[glActiveTexture]]''' || {{Version_1_3}} || [[glActiveTextureARB]]{{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glAddSwapHintRectWIN]]''' || - || - || - || [[glAddSwapHintRectWIN]]&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glAlphaFunc]]''' || {{Version_1_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glApplyTextureEXT]]''' || - || - || [[glApplyTextureEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glAreTexturesResident]]''' || {{Version_1_1}} || - || [[glAreTexturesResidentEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glArrayElement]]''' || {{Version_1_1}} || - || [[glArrayElementEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glAttachShader]]''' || {{Version_2_0}}  || [[glAttachObjectARB]]{{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== B ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBegin]]'''{{excIcon}} || {{Version_1_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBeginConditionalRender]]''' || {{Version_3_0}} || - || - || [[glBeginConditionalRenderNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBeginQuery]]''' || {{Version_1_5}} || [[glBeginQueryARB]]{{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBeginSceneEXT]]''' || - || - || [[glBeginSceneEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBeginTransformFeedback]]''' || {{Version_3_0}} || - || [[glBeginTransformFeedbackEXT]]{{altIcon}} || [[glBeginTransformFeedbackNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBeginVertexShaderEXT]]''' || - || - || [[glBeginVertexShaderEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBindAttribLocation]]''' || {{Version_2_0}} || [[glBindAttribLocationARB]]{{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBindBuffer]]''' || {{Version_1_5}} || [[glBindBufferARB]]{{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBindBufferBase]]''' || {{Version_3_0}} || - || [[glBindBufferBaseEXT]]{{altIcon}} || [[glBindBufferBaseNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBindBufferOffsetEXT]]''' || - || - || [[glBindBufferOffsetEXT]] || [[glBindBufferOffsetNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBindBufferRange]]''' || {{Version_3_0}} || - || [[glBindBufferRangeEXT]]{{altIcon}} || [[glBindBufferRangeNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBindFragDataLocation]]''' || {{Version_3_0}} || - || [[glBindFragDataLocationEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBindFragDataLocationIndexed]]''' || {{Version_3_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBindFramebuffer]]''' || {{Version_3_0}} || - || [[glBindFramebufferEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBindLightParameterEXT]]''' || - || - || [[glBindLightParameterEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBindMaterialParameterEXT]]''' || - || - || [[glBindMaterialParameterEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBindMultiTextureEXT]]''' || - || - || [[glBindMultiTextureEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBindParameterEXT]]''' || - || - || [[glBindParameterEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBindProgramARB]]''' || - || [[glBindProgramARB]] || - || [[glBindProgramNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBindRenderbuffer]]''' || {{Version_3_0}} || - || [[glBindRenderbufferEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBindSampler]]''' || {{Version_3_3}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBindTexGenParameterEXT]]''' || - || - || [[glBindTexGenParameterEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBindTexture]]''' || {{Version_1_1}} || - || [[glBindTextureEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBindTextureUnitParameterEXT]]''' || - || - || [[glBindTextureUnitParameterEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBindVertexArray]]''' || {{Version_3_0}} || - || - || [[glBindVertexArrayAPPLE]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBindVertexShaderEXT]]''' || - || - || [[glBindVertexShaderEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBinormalPointerEXT]]''' || - || - || [[glBinormalPointerEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBitmap]]''' || {{Version_1_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBlendColor]]''' || {{Version_1_2}} || - || [[glBlendColorEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBlendEquation]]''' || {{Version_1_2}} || - || [[glBlendEquationEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBlendEquationSeparate]]''' || {{Version_2_0}} || - || [[glBlendEquationSeparateEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBlendFunc]]'''{{excIcon}} || {{Version_1_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBlendFuncSeparate]]''' || {{Version_1_4}} || - || [[glBlendFuncSeparateEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBlitFramebuffer]]''' || {{Version_3_0}} || - || [[glBlitFramebufferEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBufferData]]''' || {{Version_1_5}} || [[glBufferDataARB]]{{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBufferRegionEnabledEXT]]''' || - || - || [[glBufferRegionEnabledEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glBufferSubData]]''' || {{Version_1_5}} || [[glBufferSubDataARB]]{{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== C ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCallList]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCallLists]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCheckFramebufferStatus]]''' || {{Version_3_0}} || - || [[glCheckFramebufferStatusEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCheckNamedFramebufferStatusEXT]]''' || - || - || [[glCheckNamedFramebufferStatusEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glClampColor]]''' || {{Version_3_0}} || [[glClampColorARB]]{{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glClear]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glClearAccum]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glClearBuffer]]''' || {{Version_3_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glClearColor]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glClearDepth]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glClearIndex]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glClearStencil]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glClientActiveTexture]]''' || {{Version_1_3}} || [[glClientActiveTextureARB]]{{altIcon}} || -   || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glClientAttribDefaultEXT]]''' || - || - || [[glClientAttribDefaultEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glClientWaitSync]]''' || {{Version_3_2}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glClipPlane]]'''{{excIcon}} || {{Version_1_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glColor]]''' || {{Version_1_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glColorMask]]''' || {{Version_1_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glColorMaskIndexedEXT]]''' || - || - || [[glColorMaskIndexedEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glColorMaterial]]''' || {{Version_1_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glColorPointer]]''' || {{Version_1_1}} || - || [[glColorPointerEXT]]{{altIcon}} || [[glColorPointerINTEL]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glColorSubTable]]''' || {{Version_1_2}} || - || [[glColorSubTableEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glColorTable]]''' || {{Version_1_2}} || - || [[glColorTableEXT]]{{altIcon}} || [[glColorTableSGI]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glColorTableParameter]]''' || {{Version_1_2}}|| - || - || [[glColorTableParameterSGI]]{{altIcon}} &lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCompileShader]]''' || {{Version_2_0}} || [[glCompileShaderARB]]{{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCompressedMultiTexImageEXT]]''' || - || - || [[glCompressedMultiTexImageEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCompressedMultiTexSubImageEXT]]''' || - || - || [[glCompressedMultiTexSubImageEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCompressedTexImage]]''' || {{Version_1_3}} || [[glCompressedTexImageARB]]{{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCompressedTexSubImage]]''' || {{Version_1_3}} || [[glCompressedTexSubImageARB]]{{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCompressedTextureImageEXT]]''' || - || - || [[glCompressedTextureImageEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCompressedTextureSubImageEXT]]''' || - || - || [[glCompressedTextureSubImageEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glConvolutionFilter1D]]''' || {{Version_1_2}} || - || [[glConvolutionFilter1DEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glConvolutionFilter2D]]''' || {{Version_1_2}} || - || [[glConvolutionFilter2DEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glConvolutionParameter]]''' || {{Version_1_2}} || - || [[glConvolutionParameterEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCopyBufferSubData]]''' || {{Version_3_1}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCopyColorSubTable]]''' || {{Version_1_2}} || - || [[glCopyColorSubTableEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCopyColorTable]]''' || {{Version_1_2}} || - || - || [[glCopyColorTableSGI]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCopyConvolutionFilter]]''' || {{Version_1_2}} || - || [[glCopyConvolutionFilterEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCopyMultiTexImageEXT]]''' || - || - || [[glCopyMultiTexImageEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCopyMultiTexSubImageEXT]]''' || - || - || [[glCopyMultiTexSubImageEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCopyPixels]]''' || {{Version_1_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCopyTexImage1D]]''' || {{Version_1_1}} || - || [[glCopyTexImage1DEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCopyTexImage2D]]''' || {{Version_1_1}} || - || [[glCopyTexImage2DEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCopyTexSubImage1D]]''' || {{Version_1_1}} || - || [[glCopyTexSubImage1DEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCopyTexSubImage2D]]''' || {{Version_1_1}} || - || [[glCopyTexSubImage2DEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCopyTexSubImage3D]]''' || {{Version_1_2}} || - || [[glCopyTexSubImage3DEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCopyTextureImageEXT]]''' || - || - || [[glCopyTextureImageEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCopyTextureSubImageEXT]]''' || - || - || [[glCopyTextureSubImageEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCreateProgram]]''' || {{Version_2_0}} || [[glCreateProgramObjectARB]]{{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCreateShader]]''' || {{Version_2_0}} || [[glCreateShaderObjectARB]]{{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCullFace]]''' || {{Version_1_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCullParameterEXT]]''' || - || - || [[glCullParameterEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glCurrentPaletteMatrixARB]]''' || - || [[glCurrentPaletteMatrixARB]] || - || -&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== D ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDeleteBufferRegionEXT]]''' || - || - || [[glDeleteBufferRegionEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDeleteBuffers]]''' || {{Version_1_5}} || [[glDeleteBuffersARB]]{{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDeleteFramebuffers]]''' || {{Version_3_0}} || - || [[glDeleteFramebuffersEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDeleteLists]]''' || {{Version_1_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDeleteProgram]]''' || {{Version_2_0}} || [[glDeleteObjectARB]] {{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDeleteProgramsARB]]''' || - || [[glDeleteProgramsARB]] || - || [[glDeleteProgramsNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDeleteQueries]]''' || {{Version_1_5}} || [[glDeleteQueriesARB]]{{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDeleteRenderbuffers]]''' || {{Version_3_0}} || - || [[glDeleteRenderbuffersEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDeleteSamplers]]''' || {{Version_3_3}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDeleteShader]]''' || {{Version_2_0}} || [[glDeleteObjectARB]] {{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDeleteSync]]''' || {{Version_3_2}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDeleteTextures]]''' || {{Version_1_1}} || - || [[glDeleteTexturesEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDeleteVertexArrays]]''' || {{Version_3_0}} || - || - || [[glDeleteVertexArraysAPPLE]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDeleteVertexShaderEXT]]''' || - || - || [[glDeleteVertexShaderEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDepthBoundsEXT]]''' || - || - || [[glDepthBoundsEXT]] || [[glDepthBoundsNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDepthFunc]]''' || {{Version_1_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDepthMask]]''' || {{Version_1_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDepthRange]]''' || {{Version_1_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDetachShader]]''' || {{Version_2_0}} || [[glDetachObjectARB]]{{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDisable]]''' || {{Version_1_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDisableClientState]]''' || {{Version_1_1}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDisableClientStateIndexedEXT]]''' || - || - || [[glDisableClientStateIndexedEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDisableIndexedEXT]]''' || - || - || [[glDisableIndexedEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDisableVariantClientStateEXT]]''' || - || - || [[glDisableVariantClientStateEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDisableVertexAttribArray]]''' || {{Version_2_0}} || [[glDisableVertexAttribArrayARB]]{{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDrawArrays]]''' || {{Version_1_1}} || - || [[glDrawArraysEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDrawArraysInstanced]]''' || {{Version_3_1}} || [[glDrawArraysInstancedARB]] || [[glDrawArraysInstancedEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDrawBuffer]]''' || {{Version_1_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDrawBufferRegionEXT]]''' || - || - || [[glDrawBufferRegionEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDrawBuffers]]''' || {{Version_2_0}} || [[glDrawBuffersARB]]{{altIcon}} || - || [[glDrawBuffersATI]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDrawElements]]''' || {{Version_1_1}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDrawElementsBaseVertex]]''' || {{Version_3_2}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDrawElementsInstanced]]''' || {{Version_3_1}} || [[glDrawElementsInstancedARB]] || [[glDrawElementsInstancedEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDrawElementsInstancedBaseVertex]]''' || {{Version_3_2}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDrawPixels]]''' || {{Version_1_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDrawRangeElements]]''' || {{Version_1_2}} || - || [[glDrawRangeElementsEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glDrawRangeElementsBaseVertex]]''' || {{Version_3_2}} || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== E ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glEdgeFlag]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glEdgeFlagPointer]]''' || {{Version_1_1}} || - || [[glEdgeFlagPointerEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glEnable]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glEnableClientState]]''' || {{Version_1_1}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glEnableClientStateIndexedEXT]]''' || - || - || [[glEnableClientStateIndexedEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glEnableIndexedEXT]]''' || - || - || [[glEnableIndexedEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glEnableVariantClientStateEXT]]''' || - || - || [[glEnableVariantClientStateEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glEnableVertexAttribArray]]''' || {{Version_2_0}} || [[glEnableVertexAttribArrayARB]]{{altIcon}} || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glEnd]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glEndConditionalRender]]''' || {{Version_3_0}} || - || - || [[glEndConditionalRenderNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glEndList]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glEndQuery]]''' || {{Version_1_5}} || [[glEndQueryARB]]{{altIcon}} || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glEndSceneEXT]]''' || - || - || [[glEndSceneEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glEndTransformFeedback]]''' || {{Version_3_0}} || - || [[glEndTransformFeedbackEXT]]{{altIcon}} || [[glEndTransformFeedbackNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glEndVertexShaderEXT]]''' || - || - || [[glEndVertexShaderEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glEvalCoord]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glEvalMesh]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glEvalPoint]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glExtractComponentEXT]]''' || - || - || [[glExtractComponentEXT]] || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== F ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glFeedbackBuffer]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glFenceSync]]''' || {{Version_3_2}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glFinish]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glFlush]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glFlushMappedBufferRange]]''' || {{Version_3_0}} || - || - || [[glFlushMappedBufferRangeAPPLE]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glFog]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glFogCoord]]''' || {{Version_1_4}} || - || [[glFogCoordEXT]]{{altIcon}}  || [[glFogCoordNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glFogCoordPointer]]''' || {{Version_1_4}} || - || [[glFogCoordPointerEXT]]{{altIcon}}  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glFragmentColorMaterialEXT]]''' || - || - || [[glFragmentColorMaterialEXT]]  || [[glFragmentColorMaterialSGIX]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glFragmentLightEXT]]''' || - || - || [[glFragmentLightEXT]]  || [[glFragmentLightSGIX]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glFragmentLightModelEXT]]''' || - || - || [[glFragmentLightModelEXT]]  || [[glFragmentLightModelSGIX]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glFragmentMaterialEXT]]''' || - || - || [[glFragmentMaterialEXT]]  || [[glFragmentMaterialSGIX]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glFramebufferDrawBufferEXT]]''' || - || - || [[glFramebufferDrawBufferEXT]]  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glFramebufferDrawBuffersEXT]]''' || - || - || [[glFramebufferDrawBuffersEXT]]  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glFramebufferReadBufferEXT]]''' || - || - || [[glFramebufferReadBufferEXT]]  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glFrameBufferRenderBuffer]]''' || {{Version_3_0}} || - || [[glFrameBufferRenderBufferEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glFramebufferTexture]]''' || {{Version_3_0}} || [[glFramebufferTextureARB]]{{altIcon}} || [[glFramebufferTextureEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glFrameBufferTexture1D]]''' || {{Version_3_0}} || - || [[glFrameBufferTexture1DEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glFrameBufferTexture2D]]''' || {{Version_3_0}} || - || [[glFrameBufferTexture2DEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glFrameBufferTexture3D]]''' || {{Version_3_0}} || - || [[glFrameBufferTexture3DEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glFramebufferTextureFaceARB]]''' || - || [[glFramebufferTextureFaceARB]] || [[glFramebufferTextureFaceEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glFramebufferTextureLayer]]''' || {{Version_3_0}} || [[glFramebufferTextureLayerARB]]{{altIcon}} || [[glFramebufferTextureLayerEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glFrontFace]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glFrustum]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== G ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGenBuffers]]''' || {{Version_1_5}} || [[glGenBuffersARB]]{{altIcon}} || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGenerateMipmap]]''' || {{Version_3_0}} || - || [[glGenerateMipmapEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGenerateMultiTexMipmapEXT]]''' || - || - || [[glGenerateMultiTexMipmapEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGenerateTextureMipmapEXT]]''' || - || - || [[glGenerateTextureMipmapEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGenFramebuffers]]''' || {{Version_3_0}} || - || [[glGenFramebuffersEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGenLists]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGenProgramsARB]]''' || - || [[glGenProgramsARB]] || -  || [[glGenProgramsNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGenQueries]]''' || {{Version_1_5}} || [[glGenQueriesARB]]{{altIcon}} || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGenRenderbuffers]]''' || {{Version_3_0}} || - || [[glGenRenderbuffersEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGenSamplers]]''' || {{Version_3_3}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGenSymbolsEXT]]''' || - || - || [[glGenSymbolsEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGenTextures]]''' || {{Version_1_1}} || - || [[glGenTexturesEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGenVertexArrays]]''' || {{Version_3_0}} || - || - || [[glGenVertexarraysAPPLE]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGenVertexShadersEXT]]''' || - || - || [[glGenVertexShadersEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGet]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetActiveAttrib]]''' || {{Version_2_0}} || [[glGetActiveAttribARB]]{{altIcon}} || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetActiveSubroutineName]]''' || {{Version_4_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetActiveSubroutineUniform]]''' || {{Version_4_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetActiveSubroutineUniformName]]''' || {{Version_4_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetActiveUniform]]''' || {{Version_2_0}} || [[glGetActiveUniformARB]] {{altIcon}}|| -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetActiveUniformBlock]]''' || {{Version_3_1}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetActiveUniformBlockName]]''' || {{Version_3_1}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetActiveUniformName]]''' || {{Version_3_1}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetActiveUniforms]]''' || {{Version_3_1}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetAttachedShaders]]''' || {{Version_2_0}} || [[glGetAttachedObjectsARB]]{{altIcon}} || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetAttribLocation]]''' || {{Version_2_0}} || [[glGetAttribLocationARB]]{{altIcon}} || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetBooleanv]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetBooleanIndexedEXT]]''' || - || - || [[glGetBooleanIndexedEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetBufferParameter]]''' || {{Version_1_5}} || [[glGetBufferParameterARB]]{{altIcon}} || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetBufferPointerv]]''' || {{Version_1_5}} || [[glGetBufferPointerARB]]{{altIcon}} || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetBufferSubData]]''' || {{Version_1_5}} || [[glGetBufferSubDataARB]]{{altIcon}} || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetClipPlane]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetColorTable]]''' || {{Version_1_2}} || - || [[glGetColorTableEXT]]{{altIcon}} || [[glGetColorTableSGI]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetColorTableParameter]]''' || {{Version_1_2}} || - || [[glGetColorTableParameterEXT]]{{altIcon}} || [[glGetColorTableParameterSGI]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetCompressedMultiTexImageEXT]]''' || - || - || [[glGetCompressedMultiTexImageEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetCompressedTexImage]]''' || {{Version_1_3}} || [[glGetCompressedTexImageARB]]{{altIcon}} || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetCompressedTextureImageEXT]]''' || - || - || [[glGetCompressedTextureImageEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetConvolutionFilter]]''' || {{Version_1_2}} || - || [[glGetConvolutionFilterEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetConvolutionParameter]]''' || {{Version_1_2}} || - || [[glGetConvolutionParameterEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetDoublev]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetDoubleIndexedEXT]]''' || - || - || [[glGetDoubleIndexedEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetError]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetFloatv]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetFloatIndexedEXT]]''' || - || - || [[glGetFloatIndexedEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetFragDataLocation]]''' || {{Version_3_0}} || - || [[glGetFragDataLocationEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetFragmentLightEXT]]''' || - || - || [[glGetFragmentLightEXT]] || [[glGetFragmentLightSGIX]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetFragmentMaterialEXT]]''' || - || - || [[glGetFragmentMaterialEXT]] || [[glGetFragmentMaterialSGIX]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetFramebufferAttachmentParameter]]''' || {{Version_3_0}} || - || [[glGetFramebufferAttachmentParameterEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetFramebufferParameterEXT]]''' || - || - || [[glGetFramebufferParameterEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|''als Parameter von [[glGet#GL_CURRENT_PROGRAM|glGet]]'' || {{Version_2_0}} || [[glGetHandleARB]]{{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetHistogram]]''' || {{Version_1_2}} || - || [[glGetHistogramEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetHistogramParameter]]''' || {{Version_1_2}} || - || [[glGetHistogramParameterEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetIntegerv]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetIntegerIndexedEXT]]''' || - || - || [[glGetIntegerIndexedEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetInvariantBooleanEXT]]''' || - || - || [[glGetInvariantBooleanEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetInvariantFloatEXT]]''' || - || - || [[glGetInvariantFloatEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetInvariantIntegerEXT]]''' || - || - || [[glGetInvariantIntegerEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetLight]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetLocalConstantBooleanEXT]]''' || - || - || [[glGetLocalConstantBooleanEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetLocalConstantFloatEXT]]''' || - || - || [[glGetLocalConstantFloatEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetLocalConstantIntegerEXT]]''' || - || - || [[glGetLocalConstantIntegerEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetMap]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetMaterial]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetMinmax]]''' || {{Version_1_2}} || - || [[glGetMinmaxEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetMinmaxParameter]]''' || {{Version_1_2}} || - || [[glGetMinmaxParameterEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetMultisample]]''' || {{Version_3_2}} || - || -  || [[glGetMultisampleNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetMultiTexEnvEXT]]''' || - || - || [[glGetMultiTexEnvEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetMultiTexGenEXT]]''' || - || - || [[glGetMultiTexGenEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetMultiTexImageEXT]]''' || - || - || [[glGetMultiTexImageEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetMultiTexLevelParameterEXT]]''' || - || - || [[glGetMultiTexLevelParameterEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetMultiTexParameterEXT]]''' || - || - || [[glGetMultiTexParameterEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetNamedBufferParameterEXT]]''' || - || - || [[glGetNamedBufferParameterEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetNamedBufferPointerEXT]]''' || - || - || [[glGetNamedBufferPointerEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetNamedBufferSubDataEXT]]''' || - || - || [[glGetNamedBufferSubDataEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetNamedFramebufferAttachmentParameterEXT]]''' || - || - || [[glGetNamedFramebufferAttachmentParameterEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetNamedProgramEXT]]''' || - || - || [[glGetNamedProgramEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetNamedProgramLocalParameterEXT]]''' || - || - || [[glGetNamedProgramLocalParameterEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetNamedProgramStringEXT]]''' || - || - || [[glGetNamedProgramStringEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetNamedRenderbufferParameterEXT]]''' || - || - || [[glGetNamedRenderbufferParameterEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetPixelMap]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetPixelTransformParameterEXT]]''' || - || - || [[glGetPixelTransformParameterEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetPointerv]]''' || {{Version_1_1}} || - || [[glGetPointervEXT]]{{altIcon}}  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetPointerIndexedEXT]]''' || - || - || [[glGetPointerIndexedEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetPolygonStipple]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetProgram]]''' || {{Version_2_0}} || [[glGetObjectParameterARB]]{{altIcon}} || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetProgramARB]]''' || - || [[glGetProgramARB]] || - || [[glGetProgramNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetProgramEnvParameterARB]]''' || - || [[glGetProgramEnvParameterARB]] || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetProgramInfoLog]]''' || {{Version_2_0}} || [[glGetInfoLogARB]]{{altIcon}} || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetProgramLocalParameterARB]]''' || - || [[glGetProgramLocalParameterARB]] || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetProgramStage]]''' || {{Version_4_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetProgramStringARB]]''' || - || [[glGetProgramStringARB]] || -  || [[glGetProgramStringNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetQueryiv]]''' || {{Version_1_5}} || [[glGetQueryARB]]{{altIcon}} || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetQueryObject]]''' || {{Version_1_5}} || [[glGetQueryObjectARB]]{{altIcon}} || [[glGetQueryObjectEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetRenderbufferParameter]]''' || {{Version_3_0}} || - || [[glGetRenderbufferParameterEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetSamplerParameter]]''' || {{Version_3_3}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetSeparableFilter]]''' || {{Version_1_2}} || - || [[glGetSeparableFilterEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetShader]]''' || {{Version_2_0}} || [[glGetObjectParameterARB]]{{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetShaderInfoLog]]''' || {{Version_2_0}} || [[glGetInfoLogARB]]{{altIcon}} || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetShaderSource]]''' || {{Version_2_0}} || [[glGetShaderSourceARB]]{{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetString]]''' || {{Version_1_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetSubroutineIndex]]''' || {{Version_4_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetSubroutineUniformLocation]]''' || {{Version_4_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetSync]]''' || {{Version_3_2}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetTexEnv]]''' || {{Version_1_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetTexGen]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetTexImage]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetTexLevelParameter]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetTexParameter]]''' || {{Version_1_0}} || - || [[glGetTexParameterEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetTextureImageEXT]]''' || - || - || [[glGetTextureImageEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetTextureLevelParameterEXT]]''' || - || - || [[glGetTextureLevelParameterEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetTextureParameterEXT]]''' || - || - || [[glGetTextureParameterEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetTransformFeedbackVarying]]''' || {{Version_3_0}} || - || [[glGetTransformFeedbackVaryingEXT]]{{altIcon}} || [[glGetTransformFeedbackVaryingNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetUniform]]''' || {{Version_2_0}} || [[glGetUniformARB]]{{altIcon}} || [[glGetUniformEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetUniformBlockIndex]]''' || {{Version_3_1}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetUniformBufferSizeEXT]]''' || - || - || [[glGetUniformBufferSizeEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetUniformIndices]]''' || {{Version_3_1}} || - || - || -|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetUniformLocation]]''' || {{Version_2_0}} || [[glGetUniformLocationARB]]{{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetUniformOffsetEXT]]''' || - || - || [[glGetUniformOffsetEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetUniformSubroutine]]''' || {{Version_4_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetVariantBooleanEXT]]''' || - || - || [[glGetVariantBooleanEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetVariantFloatEXT]]''' || - || - || [[glGetVariantFloatEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetVariantIntegerEXT]]''' || - || - || [[glGetVariantIntegerEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetVariantPointerEXT]]''' || - || - || [[glGetVariantPointerEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetVertexAttrib]]''' || {{Version_2_0}} || [[glGetVertexAttribARB]]{{altIcon}} || [[glGetVertexAttribEXT]] || [[glGetVertexAttribNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glGetVertexAttribPointer]]''' || {{Version_2_0}} || [[glGetVertexAttribPointerARB]]{{altIcon}} || -  || [[glGetVertexAttribPointerNV]]{{altIcon}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== H ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glHint]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glHistogram]]''' || {{Version_1_2}} || - || [[glHistogramEXT]]{{altIcon}}  || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== I ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glIndex]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glIndexFuncEXT]]''' || - || - || [[glIndexFuncEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glIndexMask]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glIndexMaterialEXT]]''' || - || - || [[glIndexMaterialEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glIndexPointer]]''' || {{Version_1_1}} || - || [[glIndexPointerEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glInitNames]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glInsertComponentEXT]]''' || - || - || [[glInsertComponentEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glInterleavedArrays]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glIsBuffer]]''' || {{Version_1_5}} || [[glIsBufferARB]]{{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glIsEnabled]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glIsEnabledIndexedEXT]]''' || - || - || [[glIsEnabledIndexedEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glIsFramebuffer]]''' || {{Version_3_0}} || - || [[glIsFramebufferEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glIsList]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glIsProgram]]''' || {{Version_2_0}} || [[glIsProgramARB]]{{altIcon}} || - || [[glIsProgramNV]]{{altIcon}} &lt;br /&gt;
|-&lt;br /&gt;
|'''[[glIsQuery]]''' || {{Version_1_5}} || [[glIsQueryARB]]{{altIcon}} || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glIsRenderbuffer]]''' || {{Version_3_0}} || - || [[glIsRenderbufferEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glIsSampler]]''' || {{Version_3_3}} || - || -   || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glIsShader]]''' || {{Version_2_0}} || - || -   || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glIsSync]]''' || {{Version_3_2}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glIsTexture]]''' || {{Version_1_0}} || - || [[glIsTextureEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glIsVariantEnabledEXT]]''' || - || - || [[glIsVariantEnabledEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glIsVertexArray]]''' || {{Version_3_0}} || - || - || [[glIsVertexArrayAPPLE]]{{altIcon}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== L ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glLight]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glLightEnvEXT]]''' || - || - || [[glLightEnvEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glLightModel]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glLineStipple]]'''{{excIcon}} || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glLineWidth]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glLinkProgram]]''' || {{Version_2_0}} || [[glLinkProgramARB]]{{altIcon}} || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glListBase]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glLoadIdentity]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glLoadMatrix]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glLoadName]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glLoadTransposeMatrix]]''' || {{Version_1_3}} || [[glLoadTransposeMatrixARB]]{{altIcon}} || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glLockArraysEXT]]''' || - || - || [[glLockArraysEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glLogicOp]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== M ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMap1]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMap2]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMapBuffer]]''' || {{Version_1_5}} || [[glMapBufferARB]]{{altIcon}} || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMapBufferRange]]''' || {{Version_3_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMapGrid]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMapNamedBufferEXT]]''' || - || - || [[glMapNamedBufferEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMaterial]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMatrixIndexARB]]''' || - || [[glMatrixIndexARB]] || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMatrixIndexPointerARB]]''' || - || [[glMatrixIndexPointerARB]] || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMatrixFrustumEXT]]''' || - || - || [[glMatrixFrustumEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMatrixLoadEXT]]''' || - || - || [[glMatrixLoadEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMatrixLoadIdentityEXT]]''' || - || - || [[glMatrixLoadIdentityEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMatrixLoadTransposedEXT]]''' || - || - || [[glMatrixLoadTransposedEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMatrixMode]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMatrixMultEXT]]''' || - || - || [[glMatrixMultEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMatrixMultTransposedEXT]]''' || - || - || [[glMatrixMultTransposedEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMatrixOrthoEXT]]''' || - || - || [[glMatrixOrthoEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMatrixPopEXT]]''' || - || - || [[glMatrixPopEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMatrixPushEXT]]''' || - || - || [[glMatrixPushEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMatrixRotateEXT]]''' || - || - || [[glMatrixRotateEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMatrixScaleEXT]]''' || - || - || [[glMatrixScaleEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMatrixTranslateEXT]]''' || - || - || [[glMatrixTranslateEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMinmax]]''' || {{Version_1_2}} || - || [[glMinmaxEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMultiDrawArrays]]''' || {{Version_1_4}} || - || [[glMultiDrawArraysEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMultiDrawElements]]''' || {{Version_1_4}} || - || [[glMultiDrawElementsEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMultiDrawElementsBaseVertex]]''' || {{Version_3_3}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMultiTexBufferEXT]]''' || - || - || [[glMultiTexBufferEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMultiTexCoord]]''' || {{Version_1_3}} || [[glMultiTexCoordARB]]{{altIcon}} || -  || [[glMultiTexCoordNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMultiTexCoordPointerEXT]]''' || - || - || [[glMultiTexCoordPointerEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMultiTexEnvEXT]]''' || - || - || [[glMultiTexEnvEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMultiTexGenEXT]]''' || - || - || [[glMultiTexGenEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMultiTexImageEXT]]''' || - || - || [[glMultiTexImageEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMultiTexParameterEXT]]''' || - || - || [[glMultiTexParameterEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMultiTexRenderbufferEXT]]''' || - || - || [[glMultiTexRenderbufferEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMultiTexSubImageEXT]]''' || - || - || [[glMultiTexSubImageEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMultMatrix]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glMultTransposeMatrix]]''' || {{Version_1_3}} || [[glMultTransposeMatrixARB]]{{altIcon}} || -  || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== N ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glNamedBufferDataEXT]]''' || - || - || [[glNamedBufferDataEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glNamedBufferSubDataEXT]]''' || - || - || [[glNamedBufferSubDataEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glNamedFramebufferRenderbufferEXT]]''' || - || - || [[glNamedFramebufferRenderbufferEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glNamedFramebufferTextureEXT]]''' || - || - || [[glNamedFramebufferTextureEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glNamedFramebufferTexture1DEXT]]''' || - || - || [[glNamedFramebufferTexture1DEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glNamedFramebufferTexture2DEXT]]''' || - || - || [[glNamedFramebufferTexture2DEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glNamedFramebufferTexture3DEXT]]''' || - || - || [[glNamedFramebufferTexture3DEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glNamedFramebufferTextureFaceEXT]]''' || - || - || [[glNamedFramebufferTextureFaceEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glNamedFramebufferTextureLayerEXT]]''' || - || - || [[glNamedFramebufferTextureLayerEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glNamedProgramLocalParameterEXT]]''' || - || - || [[glNamedProgramLocalParameterEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glNamedProgramStringEXT]]''' || - || - || [[glNamedProgramStringEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glNamedRenderbufferStorageEXT]]''' || - || - || [[glNamedRenderbufferStorageEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glNamedRenderbufferStorageMultisampleEXT]]''' || - || - || [[glNamedRenderbufferStorageMultisampleEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glNamedRenderbufferStorageMultisampleCoverageEXT]]''' || - || - || [[glNamedRenderbufferStorageMultisampleCoverageEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glNewBufferRegionEXT]]''' || - || - || [[glNewBufferRegionEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glNewList]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glNormal]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glNormalPointer]]''' || {{Version_1_1}} || - || [[glNormalPointerEXT]]{{altIcon}} || [[glNormalPointerINTEL]]{{altIcon}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0 ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glOrtho]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== P ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glPassThrough]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glPatchParameter]]''' || {{Version_4_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glPixelMap]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glPixelStore]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glPixelTransfer]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glPixelTransformParameterEXT]]''' || - || - || [[glPixelTransformParameterEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glPixelZoom]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glPointParameter]]''' || {{Version_1_4}} || [[glPointParameterARB]]{{altIcon}} || [[glPointParameterEXT]]{{altIcon}}  || [[glPointParameterNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glPointSize]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glPolygonMode]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glPolygonOffset]]''' || {{Version_1_0}} || - || [[glPolygonOffsetEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glPolygonStipple]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glPopAttrib]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glPopClientAttrib]]''' || {{Version_1_0}} || - || - || - &lt;br /&gt;
|-&lt;br /&gt;
|'''[[glPopMatrix]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glPopName]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glPrimitiveRestart]]''' || {{Version_3_1}} || - || -  || [[glPrimitiveRestartNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glPrimitiveRestartIndex]]''' || {{Version_3_1}} || - || -  || [[glPrimitiveRestartIndexNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glPrioritizeTextures]]''' || {{Version_1_0}} || - || [[glPrioritizeTexturesEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glProgramEnvParameterARB]]''' || - || [[glProgramEnvParameterARB]] || [[glProgramEnvParameterEXT]]{{altIcon}} || [[glProgramEnvParameterNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glProgramLocalParameterARB]]''' || - || [[glProgramLocalParameterARB]] || [[glProgramLocalParameterEXT]]{{altIcon}} || [[glProgramLocalParameterNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glProgramParameterARB]]''' || - || [[glProgramParameterARB]] || [[glProgramParameterEXT]]{{altIcon}}  || [[glProgramParameterNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glProgramStringARB]]''' || - || [[glProgramStringARB]] || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glProgramUniformEXT]]''' || - || - || [[glProgramUniformEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glProgramUniformMatrixEXT]]''' || - || - || [[glProgramUniformMatrixEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glProvokingVertex]]''' || {{Version_3_2}} || - || [[glProvokingVertexEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glPushAttrib]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glPushClientAttrib]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glPushClientAttribDefaultEXT]]''' || - || - || [[glPushClientAttribDefaultEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glPushMatrix]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glPushName]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Q ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glQueryCounter]]''' || {{Version_3_3}} || - || -  || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== R ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glRasterPos]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glReadBuffer]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glReadBufferRegionEXT]]''' || - || - || [[glReadBufferRegionEXT]]  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glReadPixels]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glRect]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glRenderbufferStorage]]''' || {{Version_3_0}} || - || [[glRenderbufferStorageEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glRenderbufferStorageMultisample]]''' || {{Version_3_0}} || - || [[glRenderbufferStorageMultisampleEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glRenderMode]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glResetHistogram]]''' || {{Version_1_2}} || - || [[glResetHistogramEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glResetMinmax]]''' || {{Version_1_2}} || - || [[glResetMinmaxEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glRotate]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== S ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glSampleCoverage]]''' || {{Version_1_3}} || [[glSampleCoverageARB]]{{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glSampleMask]]''' || {{Version_3_2}} || - || [[glSampleMaskEXT]]{{altIcon}} || [[glSampleMaskSGIS]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glSamplePatternEXT]]''' || - || - || [[glSamplePatternEXT]] || [[glSamplePatternSGIS]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glSamplerParameter]]''' || {{Version_3_3}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glScale]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glScissor]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glSecondaryColor]]''' || {{Version_1_4}} || - || [[glSecondaryColorEXT]]{{altIcon}} || [[glSecondaryColorNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glSecondaryColorPointer]]''' || {{Version_1_4}} || - || [[glSecondaryColorPointerEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glSelectBuffer]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glSeparableFilter2D]]''' || {{Version_1_2}} || - || [[glSeparableFilter2DEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glSetInvariantEXT]]''' || - || - || [[glSetInvariantEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glSetLocalConstantEXT]]''' || - || - || [[glSetLocalConstantEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glShadeModel]]'''{{excIcon}} || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glShaderOp1EXT]]''' || - || - || [[glShaderOp1EXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glShaderOp2EXT]]''' || - || - || [[glShaderOp2EXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glShaderOp3EXT]]''' || - || - || [[glShaderOp3EXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glShaderSource]]''' || {{Version_2_0}} || [[glShaderSourceARB]]{{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glStencilFunc]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glStencilFuncSeparate]]''' || {{Version_2_0}} || - || - || [[glStencilFuncSeparateATI]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glStencilMask]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glStencilMaskSeparate]]''' || {{Version_2_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glStencilOp]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glStencilOpSeparate]]''' || {{Version_2_0}} || - || - || [[glStencilOpSeparateATI]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glSwizzleEXT]]''' || - || - || [[glSwizzleEXT]] || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== T ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glTangentPointerEXT]]''' || - || - || [[glTangentPointerEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glTexBuffer]]''' || {{Version_3_1}} || [[glTexBufferARB]]{{altIcon}} || [[glTexBufferEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glTexCoord]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glTexCoordPointer]]''' || {{Version_1_1}} || - || [[glTexCoordPointerEXT]]{{altIcon}} || [[glTexCoordPointerINTEL]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glTexEnv]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glTexGen]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glTexImage1D]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glTexImage2D]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glTexImage2DMultisample]]''' || {{Version_3_2}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glTexImage3D]]''' || {{Version_1_2}} || - || [[glTexImage3DEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glTexImage3DMultisample]]''' || {{Version_3_2}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glTexParameter]]''' || {{Version_1_0}} || - || [[glTexParameterIEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glTexSubImage1D]]''' || {{Version_1_0}} || - || [[glTexSubImage1DEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glTexSubImage2D]]''' || {{Version_1_0}} || - || [[glTexSubImage2DEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glTexSubImage3D]]''' || {{Version_1_2}} || - || [[glTexSubImage3DEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glTextureBufferEXT]]''' || - || - || [[glTextureBufferEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glTextureImageEXT]]''' || - || - || [[glTextureImageEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glTextureLightEXT]]''' || - || - || [[glTextureLightEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glTextureMaterialEXT]]''' || - || - || [[glTextureMaterialEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glTextureNormalEXT]]''' || - || - || [[glTextureNormalEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glTextureParameterEXT]]''' || - || - || [[glTextureParameterEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glTextureRenderbufferEXT]]''' || - || - || [[glTextureRenderbufferEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glTextureSubImageEXT]]''' || - || - || [[glTextureSubImageEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glTransformFeedbackVaryings]]''' || {{Version_3_0}} || - || [[glTransformFeedbackVaryingsEXT]]{{altIcon}} || [[glTransformFeedbackVaryingsNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glTranslate]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== U ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glUniform]]''' || {{Version_2_0}} || [[glUniformARB]]{{altIcon}} || [[glUniformEXT]]{{altIcon}} || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glUniformBlockBinding]]''' || {{Version_3_1}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glUniformBufferEXT]]''' || - || - || [[glUniformBufferEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glUniformMatrix]]''' || {{Version_2_0}} || [[glUniformMatrixARB]]{{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glUniformSubroutines]]''' || {{Version_4_0}} || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glUnlockArraysEXT]]''' || - || - || [[glUnlockArraysEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glUnmapBuffer]]''' || {{Version_1_5}} || [[glUnmapBufferARB]]{{altIcon}} || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glUnmapNamedBufferEXT]]''' || - || - || [[glUnmapNamedBufferEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glUseProgram]]''' || {{Version_2_0}} || [[glUseProgramObjectARB]]{{altIcon}} ||- || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== V ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glValidateProgram]]''' || {{Version_2_0}} || [[glValidateProgramARB]]{{altIcon}} || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glVariantEXT]]''' || - || - || [[glVariantEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glVariantPointerEXT]]''' || - || - || [[glVariantPointerEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glVertex]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glVertexAttrib]]''' || {{Version_2_0}} || [[glVertexAttribARB]]{{altIcon}} || [[glVertexAttribEXT]]{{altIcon}} || [[glVertexAttribNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glVertexAttribDivisor]]''' || {{Version_3_3}} || [[glVertexAttribDivisorARB]] || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glVertexAttribPointer]]''' || {{Version_2_0}} || [[glVertexAttribPointerARB]]{{altIcon}} || [[glVertexAttribPointerEXT]]{{altIcon}} || [[glVertexAttribPointerNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glVertexBlendARB]]''' || - || [[glVertexBlendARB]] || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glVertexPointer]]''' || {{Version_1_1}} || - || [[glVertexPointerEXT]]{{altIcon}} || [[glVertexPointerINTEL]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glVertexWeightEXT]]''' || - || - || [[glVertexWeightEXT]] || [[glVertexWeightNV]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glVertexWeightPointerEXT]]''' || - || - || [[glVertexWeightPointerEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glViewport]]''' || {{Version_1_0}} || - || -  || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== W ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glWaitSync]]''' || {{Version_3_2}} || - || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glWeightARB]]''' || - || [[glWeightARB]] || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glWeightPointerARB]]''' || - || [[glWeightPointerARB]] || -  || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glWindowPos]]''' || {{Version_1_4}} || [[glWindowPosARB]]{{altIcon}} || -  || [[glWindowPosMESA]]{{altIcon}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glWriteMaskEXT]]''' || - || - || [[glWriteMaskEXT]] || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== OpenGL Parameter-Tabellen ===&lt;br /&gt;
Die nachfolgenden Listen enthalten Parameter- bzw. Typbeschreibungen, die bei vielen OpenGL-Funktionen immer wieder auftauchen.&lt;br /&gt;
&lt;br /&gt;
[[internes Pixelformat|interne Pixelformate]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Pixelformat|Pixelformate]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Pixeldatentyp|Datentypen für Pixel]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[:Kategorie:GLU|GLU]] ==&lt;br /&gt;
(Was ist die [[GLU]]?)&lt;br /&gt;
&lt;br /&gt;
=== B ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluBeginCurve]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluBeginPolygon]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluBeginSurface]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluBeginTrim]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluBuild1DMipmaps]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluBuild2DMipmaps]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluBuild3DMipmaps]]''' || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== C ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluCylinder]]''' || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== D ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluDeleteNurbsRenderer]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluDeleteQuadric]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluDeleteTess]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluDisk]]''' || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== E ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluEndCurve]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluEndPolygon]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluEndSurface]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluEndTrim]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluErrorString]]''' || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== G ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluGetNurbsProperty]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluGetString]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluGetTessProperty]]''' || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== L ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluLoadSamplingMatrices]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluLookAt]]''' || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== N ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluNewNurbsRenderer]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluNewQuadric]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluNewTess]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluNextContour]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluNurbsCallback]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluNurbsCurve]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluNurbsProperty]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluNurbsSurface]]''' || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== O ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluOrtho2D]]''' || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== P ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluPartialDisk]]'''{{excIcon}} || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluPerspective]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluPickMatrix]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluProject]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluPwlCurve]]''' || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Q ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluQuadricCallback]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluQuadricDrawStyle]]'''{{excIcon}} || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluQuadricNormals]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluQuadricOrientation]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluQuadricTexture]]''' || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== S ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluScaleImage]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluSphere]]'''{{excIcon}} || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== T ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluTessBeginContour]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluTessBeginPolygon]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluTessCallback]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluTessEndContour]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluTessEndPolygon]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluTessNormal]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluTessProperty]]''' {{icpIcon}} || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluTessVertex]]''' || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== U ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gluUnProject]]''' || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[:Kategorie:GLX|GLX]] ==&lt;br /&gt;
(Was ist die [[GLX]]?)&lt;br /&gt;
&lt;br /&gt;
''Als Quelle für die Übersetzung weiterer Befehlsspezifikationen kann diese Sammlung verwendet werden: [http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glx/ OpenGL.org GLX Manpages]''&lt;br /&gt;
&lt;br /&gt;
=== C ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXChooseFBConfig]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXChooseVisual]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXCopyContext]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXCreateContext]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXCreateGLXPixmap]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXCreateNewContext]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXCreatePbuffer]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXCreatePixmap]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXCreateWindow]]''' || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== D ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXDestroyContext]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXDestroyGLXPixmap]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXDestroyPbuffer]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXDestroyPixmap]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXDestroyWindow]]''' || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== F ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXFreeContextEXT]]''' || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== G ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXGetClientString]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXGetConfig]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXGetCurrentContextIDEXT]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXGetCurrentContext]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXGetCurrentDisplay]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXGetCurrentDrawable]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXGetCurrentReadDrawable]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXGetFBConfigAttrib]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXGetFBConfigs]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXGetProcAddress]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXGetSelectedEvent]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXGetVisualFromFBConfig]]''' || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== I ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXImportContextEXT]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXIntro]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXIsDirect]]''' || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== M ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXMakeContextCurrent]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXMakeCurrent]]''' || - || - || - || -&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
=== Q ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXQueryContext]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXQueryContextInfoEXT]]''' || - || - || [[glXQueryContextInfoEXT]] || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXQueryDrawable]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXQueryExtension]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXQueryExtensionsString]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXQueryServerString]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXQueryVersion]]''' || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== S ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXSelectEvent]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXSwapBuffers]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXSwapIntervalEXT]]''' || - || - || [[glXSwapIntervalEXT]] || - &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== U ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXUseXFont]]''' || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== W ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXWaitGL]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[glXWaitX]]''' || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[:Kategorie:WGL|WGL]] ==&lt;br /&gt;
(Was ist die [[WGL]]?)&lt;br /&gt;
&lt;br /&gt;
''Als Quelle für die Übersetzung weiterer Befehlsspezifikationen kann diese Sammlung verwendet werden: [http://floyd.atc.no/Docs/OpenGL/man-pages/WGLmanpages/ floyd.atc.no WGL Manpages]''&lt;br /&gt;
&lt;br /&gt;
=== C ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglChoosePixelFormatARB]]''' || - || [[wglChoosePixelFormatARB]] || - || - &lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglCopyContext]]''' || - || - || - || - &lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglCreateContext]]''' || - || - || - || - &lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglCreateBufferRegionEXT]]''' || - || - || [[wglCreateBufferRegionEXT]] || - &lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglCreateLayerContext]]''' || - || - || - || - &lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglCreatePbufferARB]]''' || - || [[wglCreatePbufferARB]] || - || - &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== D ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglDeleteBufferRegionEXT]]''' || - || - || [[wglDeleteBufferRegionEXT]] || - &lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglDeleteContext]]''' || - || - || - || - &lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglDestroyPbufferARB]]''' || - || [[wglDestroyPbufferARB]] || - || - &lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglDescribeLayerPlane]]''' || - || - || - || - &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== G ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglGetCurrentContext]]''' || - || - || - || - &lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglGetCurrentDC]]''' || - || - || - || - &lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglGetCurrentReadDC]]''' || - || - || - || - &lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglGetExtensionsStringARB]]''' || - || [[wglGetExtensionsStringARB]] || - || - &lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglGetLayerPaletteEntries]]''' || - || - || - || - &lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglGetPbufferDCARB]]''' || - || [[wglGetPbufferDCARB]] || - || - &lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglGetPixelFormatAttribARB]]''' || - || [[wglGetPixelFormatAttribARB]] || - || - &lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglGetPixelFormatAttribEXT]]''' || - || - || [[wglGetPixelFormatAttrixEXT]] || - &lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglGetProcAddress]]''' || - || - || - || - &lt;br /&gt;
|}&lt;br /&gt;
=== M ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglMakeCurrent]]''' || - || - || - || - &lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglMakeCurrentContextEXT]]''' || - || - || [[wglMakeCurrentContextEXT]] || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Q ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglQueryPbufferARB]]''' || - || [[wglQueryPbufferARB]] || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== R ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglRealizeLayerPalette]]''' || - || - || - || - &lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglReleasePbufferDCARB]]''' || - || [[wglReleasePbufferDCARB]] || - || - &lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglRestoreBufferRegionEXT]]''' || - || - || [[wglRestoreBufferRegionEXT]] || - &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== S ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglSaveBufferRegionEXT]]''' || - || - || [[wglSaveBufferRegionEXT]] || - &lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglSetLayerPaletteEntries]]''' || - || - || - || - &lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglShareLists]]''' || - || - || - || - &lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglSwapIntervalEXT]]''' || - || - || [[wglSwapIntervalEXT]] || - &lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglSwapLayerBuffers]]''' || - || - || - || - &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== U ===&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Aktuelle Version &lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Kernfunktion (seit)&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|ARB Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|EXT Entsprechung&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Herstellerspezifisch&lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglUseFontBitmaps]]''' || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
|'''[[wglUseFontOutlines]]''' || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Externe Funktionen ==&lt;br /&gt;
Hier sind alle Funktionen zu finden, die zwar direkt nichts mit OpenGL zu tun haben, aber trotzdem im Normalfall zur Nutzung der GL benötigt werden.&lt;br /&gt;
&lt;br /&gt;
=== Win32 Funktionen ===&lt;br /&gt;
{|{{Prettytable_B1}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[ChoosePixelFormat]]'''&lt;br /&gt;
|-&lt;br /&gt;
|'''[[DescribePixelFormat]]'''&lt;br /&gt;
|-&lt;br /&gt;
|'''[[GetLastError]]'''&lt;br /&gt;
|-&lt;br /&gt;
|'''[[getObject]]'''&lt;br /&gt;
|-&lt;br /&gt;
|'''[[GetPixelFormat]]'''&lt;br /&gt;
|-&lt;br /&gt;
|'''[[SetPixelFormat]]'''&lt;br /&gt;
|-&lt;br /&gt;
|'''[[SwapBuffers]]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Linux / Unix Funktionen ===&lt;br /&gt;
{|{{Prettytable_B1}}&lt;br /&gt;
|-&lt;br /&gt;
|'''[[XCloseDisplay]]'''&lt;br /&gt;
|-&lt;br /&gt;
|'''[[XDefaultScreen]]'''&lt;br /&gt;
|-&lt;br /&gt;
|'''[[XOpenDisplay]]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Siehe auch===&lt;br /&gt;
[[OpenAL-Funktionsübersicht]], [[SDL-Funktionsübersicht]]&lt;/div&gt;</summary>
		<author><name>Darkinsanity</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Diskussion:Tutorial_WebGL&amp;diff=25097</id>
		<title>Diskussion:Tutorial WebGL</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Diskussion:Tutorial_WebGL&amp;diff=25097"/>
				<updated>2011-06-13T00:01:40Z</updated>
		
		<summary type="html">&lt;p&gt;Darkinsanity: mein Satzbau war mal wieder phänomenal&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Updates ==&lt;br /&gt;
Im Februar kam ja die Version 1.0 der Spezifikation, von daher könnte man das Tutorial evtl. etwas aufräumen und auf den neuesten Stand bringen. Der Kompatibilitäts-Code war ja schon seit einigen Nightly-Builds des Firefox nicht mehr nötig und sollte jetzt eigentlich überflüssig sein. Auch die Initialisierung kann vereinfacht werden - leider halten sich die Browser noch nicht so ganz an den Standard, sonst würde es überall per canvas.getContext(&amp;quot;webgl&amp;quot;) funktionieren, aber alle benutzen mittlerweile entweder &amp;quot;webgl&amp;quot; (hab ich noch nicht gesehen, steht aber so in der Spezifikation) oder &amp;quot;experimental-webgl&amp;quot; (Firefox, Chrome, WebKit). [[Benutzer:Darkinsanity|Darkinsanity]] 02:00, 13. Jun. 2011 (CEST)&lt;/div&gt;</summary>
		<author><name>Darkinsanity</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Diskussion:Tutorial_WebGL&amp;diff=25096</id>
		<title>Diskussion:Tutorial WebGL</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Diskussion:Tutorial_WebGL&amp;diff=25096"/>
				<updated>2011-06-13T00:00:44Z</updated>
		
		<summary type="html">&lt;p&gt;Darkinsanity: Updates für Tutorial?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Updates ==&lt;br /&gt;
Im Februar kam ja die Version 1.0 der Spezifikation, von daher könnte man das Tutorial evtl. etwas aufräumen und auf den neuesten Stand bringen. Der Kompatibilitäts-Code war ja schon seit nicht mehr nötig und sollte jetzt eigentlich überflüssig sein. Auch die Initialisierung kann vereinfacht werden - leider halten sich die Browser noch nicht so ganz an den Standard, sonst würde es überall per canvas.getContext(&amp;quot;webgl&amp;quot;) funktionieren, aber alle benutzen mittlerweile entweder &amp;quot;webgl&amp;quot; (hab ich noch nicht gesehen, steht aber so in der Spezifikation) oder &amp;quot;experimental-webgl&amp;quot; (Firefox, Chrome, WebKit). [[Benutzer:Darkinsanity|Darkinsanity]] 02:00, 13. Jun. 2011 (CEST)&lt;/div&gt;</summary>
		<author><name>Darkinsanity</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Tutorial_WebGL&amp;diff=25095</id>
		<title>Tutorial WebGL</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Tutorial_WebGL&amp;diff=25095"/>
				<updated>2011-06-12T23:43:39Z</updated>
		
		<summary type="html">&lt;p&gt;Darkinsanity: Update für Firefox-Infos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WebGL ist der neue Standard für OpenGL im Browser. Der Standard ermöglicht es hardwarebeschleunigte 3D-Grafik mit Shadern im Browser darzustellen, ohne dabei auf spezielle Plugins angewiesen zu sein.&lt;br /&gt;
&lt;br /&gt;
In diesem Tutorial werden die wesentlichen Besonderheiten von WebGL gegenüber anderen OpenGL-Anwendungen vorgestellt. Kenntnisse in [http://de.wikipedia.org/wiki/JavaScript JavaScript] und [http://www.khronos.org/opengles/2_X/ OpenGL ES 2.0], also insbesondere [[GLSL]] und [[VBO]]s werden vorausgesetzt. Es sei darauf hingewiesen, dass WebGL im Augenblick noch hochgradig experimentell ist und bisher auch nicht wirklich dokumentiert ist. Neben diesem Tutorial existieren auch einige andere [[#Links|Tutorials]], aber ein Blick in den Quellcode der verfügbaren Demos kann nie schaden.&lt;br /&gt;
&lt;br /&gt;
WebGL ist im wesentlichen ein JavaScript-Binding für OpenGL ES 2.0 und wird bisher von den aktuellen Entwickler-Versionen von Firefox, Google Chrome und Safari unterstützt. Weitere Browser auf Gecko- bzw. Webkit-Basis werden sicher bald folgen. Bisher wird der WebGL-Standard von den folgenden Browsern unterstützt (Stand Dezember 2009):&lt;br /&gt;
&lt;br /&gt;
* Gecko-Engine&lt;br /&gt;
** Mozilla Firefox 4.0 ([http://www.mozilla-europe.org/de/ Homepage])&lt;br /&gt;
*** WebGL muss über die Einstellung &amp;lt;tt&amp;gt;about:config&amp;lt;/tt&amp;gt; -&amp;gt; &amp;lt;tt&amp;gt;webgl.enabled_for_all_sites&amp;lt;/tt&amp;gt; aktiviert werden. Unter Windows kann es einige Probleme geben, wenn kein OpenGL verfügbar ist, in dem Fall muss [http://hacks.mozilla.org/2009/09/webgl-for-firefox/ in den Softwaremodus geschaltet] werden.&lt;br /&gt;
*** Es ist möglich verschiedene Firefox-Versionen parallel zu verwenden. Es ist aber ratsam dafür getrennte Profile anzulegen. Das Ausführen von &amp;lt;tt&amp;gt;firefox -help&amp;lt;/tt&amp;gt; in der Konsole dürfte in diesem Zusammenhang hilfreich sein, insbesondere die Optionen &amp;lt;tt&amp;gt;-P&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;-ProfileManager&amp;lt;/tt&amp;gt; und &amp;lt;tt&amp;gt;-no-remote&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* WebKit ([http://nightly.webkit.org/ Nightly Build])&lt;br /&gt;
** Google Chrome 4.0.221.8 ([http://build.chromium.org/buildbot/snapshots/ Nightly-Build])&lt;br /&gt;
*** mit den Parametern &amp;lt;tt&amp;gt;--enable-webgl&amp;lt;/tt&amp;gt; und &amp;lt;tt&amp;gt;--no-sandbox&amp;lt;/tt&amp;gt; starten&lt;br /&gt;
** Safari (Nightly Build, ab ca. 23.9.2009)&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:grey;&amp;quot;&amp;gt;...bitte ergänzen...&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Demos==&lt;br /&gt;
Zunächst einmal ein paar Demos um die Funktionalität des eigenen Browsers zu testen.&lt;br /&gt;
{|{{Prettytable_B1}}&lt;br /&gt;
| [[Bild:webgl-sporeviewer.jpg|320px]]&amp;lt;br /&amp;gt;[http://people.mozilla.com/~vladimir/webgl/spore/sporeview.html Spore Creature Viewer]&lt;br /&gt;
| [[Bild:webgl-metatunnel.jpg|320px]]&amp;lt;br /&amp;gt;[http://cs.helsinki.fi/u/ilmarihe/metatunnel.html Metatunnel]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==WebGL==&lt;br /&gt;
&lt;br /&gt;
===Context===&lt;br /&gt;
Um WebGL nutzen zu können benötigt man zunächst einmal ein HTML5 Canvas-Element, welchem wir passender weise die ID &amp;quot;canvas&amp;quot; geben. Wir können die Anwendung beispielsweise über das &amp;lt;tt&amp;gt;onload&amp;lt;/tt&amp;gt;-Event des &amp;lt;tt&amp;gt;body&amp;lt;/tt&amp;gt;-Elements startet. Genauso gut kann man natürlich auch einen Link oder Button verwenden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;!--&lt;br /&gt;
            function init() {&lt;br /&gt;
&lt;br /&gt;
                // ...&lt;br /&gt;
&lt;br /&gt;
            }&lt;br /&gt;
	// --&amp;gt;&lt;br /&gt;
        &amp;lt;/script&amp;gt; &lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body onload=&amp;quot;init()&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;canvas id=&amp;quot;canvas&amp;quot; width=&amp;quot;640&amp;quot; height=&amp;quot;480&amp;quot;&amp;gt;&amp;lt;/canvas&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Von unserem Canvas erhalten wir zum einen die spätere Viewportgröße und zum anderen einen sogenannten Context. Das Context-Objekt erlaubt uns sämtliche OpenGL ES 2.0 Funktionen aufzurufen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// our WebGL rendering context, it might be useful to use a global variable for this&lt;br /&gt;
var gl = null;&lt;br /&gt;
&lt;br /&gt;
// grab the canvas object and its dimensions&lt;br /&gt;
var canvas = document.getElementById(&amp;quot;canvas&amp;quot;);&lt;br /&gt;
var viewportWidth = canvas.width;&lt;br /&gt;
var viewportHeight = canvas.height;&lt;br /&gt;
&lt;br /&gt;
// request rendering context from the canvas&lt;br /&gt;
var names = [ &amp;quot;webgl&amp;quot;, &amp;quot;experimental-webgl&amp;quot;, &amp;quot;moz-webgl&amp;quot;, &amp;quot;webkit-3d&amp;quot; ];&lt;br /&gt;
for (var i=0; i&amp;lt;names.length; i++) {&lt;br /&gt;
    try { &lt;br /&gt;
        gl = canvas.getContext(names[i]);&lt;br /&gt;
        if (gl) { break; }&lt;br /&gt;
    } catch (e) { }&lt;br /&gt;
}&lt;br /&gt;
if (!gl) {&lt;br /&gt;
    alert(&amp;quot;No known OpenGL context detected! Is it enabled?&amp;quot;);&lt;br /&gt;
    return;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// since WebGL is still experimental, we need some compatibility code&lt;br /&gt;
compatibilityCode();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da die verschiedenen Implementierungen noch nicht alle auf dem selben Stand sind ist im Augenblick noch etwas Kompatibilitätscode erforderlich. In Zukunft wird dies hoffentlich nicht mehr notwendig sein. Die Funktion &amp;lt;tt&amp;gt;compatibilityCode()&amp;lt;/tt&amp;gt; findest du in der [[Tutorial_WebGL_Sample|Beispiel-Implementierung]] dieses Tutorials.&lt;br /&gt;
&lt;br /&gt;
===Shader===&lt;br /&gt;
In OpenGL ES 2.0 herrscht Shader-Zwang, eine [[Feste Funktionspipeline|feste Funktionspipeline]] existiert nicht. Stehen der verfügbaren Grafikhardware keine GLSL-Shader zur Verfügung, muss OpenGL ES in den Softwaremodus geschaltet werden und wird entsprechend langsam. Das Laden von GLSL-Shadern geschieht wie gewohnt. Zuerst werden Vertex- und Fragmentshader geladen und compiliert. Beide Shader werden dann an ein Program-Objekt angehängt und gelinkt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function loadShader(shaderType, shaderSource) {&lt;br /&gt;
    var shader = gl.createShader(shaderType);&lt;br /&gt;
    if (!shader) { return null; }    &lt;br /&gt;
    gl.shaderSource(shader, shaderSource);&lt;br /&gt;
    gl.compileShader(shader);&lt;br /&gt;
&lt;br /&gt;
    if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {&lt;br /&gt;
        alert(gl.getShaderInfoLog(shader));&lt;br /&gt;
        return null;&lt;br /&gt;
    }    &lt;br /&gt;
&lt;br /&gt;
    return shader;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var vertexShaderSource = &amp;quot;...Vertexshader als String...&amp;quot;;&lt;br /&gt;
var fragmentShaderSource = &amp;quot;...Fragmentshader als String...&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
var vertexShader = loadShader(gl.VERTEX_SHADER, vertexShaderSource);&lt;br /&gt;
var fragmentShader = loadShader(gl.FRAGMENT_SHADER, fragmentShaderSource);&lt;br /&gt;
if (!vertexShader || !fragmentShader) {&lt;br /&gt;
    alert(&amp;quot;Shader problem&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// create program object&lt;br /&gt;
var program = gl.createProgram();&lt;br /&gt;
&lt;br /&gt;
// attach our two shaders to the program&lt;br /&gt;
gl.attachShader(program, vertexShader);&lt;br /&gt;
gl.attachShader(program, fragmentShader);&lt;br /&gt;
&lt;br /&gt;
// setup attributes (optional)&lt;br /&gt;
gl.bindAttribLocation(program, 0, &amp;quot;aPosition&amp;quot;);&lt;br /&gt;
gl.bindAttribLocation(program, 1, &amp;quot;aNormal&amp;quot;);&lt;br /&gt;
gl.bindAttribLocation(program, 2, &amp;quot;aTexCoord&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// linking&lt;br /&gt;
gl.linkProgram(program);&lt;br /&gt;
if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {&lt;br /&gt;
    alert(gl.getProgramInfoLog(program));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// setup uniforms (optional)&lt;br /&gt;
gl.useProgram(program);&lt;br /&gt;
gl.uniform1i(gl.getUniformLocation(program, &amp;quot;uTexture&amp;quot;), 0);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im obigen Beispiel wird der Shader-Quellcode fest als String in den JavaScript-Code integriert. Das ist natürlich ziemlich unübersichtlich. Vom Prinzip spielt es keine Rolle wo der String herkommt. Beispielsweise kann man ihn mit einem HTTP-Request in einer Shader-Datei vom Server laden. Es ist aber auch möglich den Shader-Code als spezielles Script-Element in die HTML-Datei einzubinden. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script id=&amp;quot;shader-vs&amp;quot; type=&amp;quot;x-shader/x-vertex&amp;quot;&amp;gt;&lt;br /&gt;
attribute vec3 aPosition;&lt;br /&gt;
attribute vec3 aNormal;&lt;br /&gt;
attribute vec2 aTexCoord;&lt;br /&gt;
varying vec3 vNormal;&lt;br /&gt;
varying vec2 vTexCoord; &lt;br /&gt;
void main() {&lt;br /&gt;
    gl_Position = vec4(aPosition, 1.0);&lt;br /&gt;
    vTexCoord = aTexCoord;&lt;br /&gt;
    vNormal = aNormal;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script id=&amp;quot;shader-fs&amp;quot; type=&amp;quot;x-shader/x-fragment&amp;quot;&amp;gt;&lt;br /&gt;
varying vec3 vNormal;&lt;br /&gt;
varying vec2 vTexCoord;&lt;br /&gt;
uniform sampler2D uTexture;&lt;br /&gt;
void main() {&lt;br /&gt;
    gl_FragColor = texture2D(uTexture, vTexCoord);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Browser hat vom Script-Typ &amp;lt;tt&amp;gt;&amp;quot;x-shader/x-vertex&amp;quot;&amp;lt;/tt&amp;gt; natürlich noch nie etwas gehört und wird das Element entsprechend einfach ignorieren. Mit einer einfachen JavaScript-Funktion kann man aber trotzdem an den Inhalt gelangen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function getShaderSource(id) {&lt;br /&gt;
    var script = document.getElementById(id);&lt;br /&gt;
    if (!script) { return null; }&lt;br /&gt;
    &lt;br /&gt;
    var source = &amp;quot;&amp;quot;;&lt;br /&gt;
    var child = script.firstChild;&lt;br /&gt;
    while (child) {&lt;br /&gt;
        // node is a &amp;quot;textnode&amp;quot; ?&lt;br /&gt;
        // see: http://de.selfhtml.org/javascript/objekte/node.htm#node_type&lt;br /&gt;
        if (child.nodeType == 3) {&lt;br /&gt;
            source += child.textContent;&lt;br /&gt;
        }&lt;br /&gt;
        child = child.nextSibling;&lt;br /&gt;
    }&lt;br /&gt;
    return source;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var vertexShaderSource = getShaderSource(&amp;quot;shader-vs&amp;quot;);&lt;br /&gt;
var fragmentShaderSource = getShaderSource(&amp;quot;shader-fs&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===VertexBufferObjects===&lt;br /&gt;
VertexArrays scheinen zumindest im Firefox bisher nicht implementiert zu sein. Das mag damit zusammenhängen, dass Arrays in JavaScript sehr langsam sind. Arrays müssen nämlich in JavaScript nicht zwangsläufig wirkliche zusammenhängende Arrays sein, sondern können auch als HashMap realisiert sein.&lt;br /&gt;
&lt;br /&gt;
Um Geometrie zu rendern muss also zumindest im Augenblick auf VertexBufferObjects ([[VBO]]s) zurückgegriffen werden. Diese können im wesentlichen wie gewohnt benutzt werden. Es gibt eine spezielle Wrapper-Klasse &amp;lt;tt&amp;gt;WebGLFloatArray&amp;lt;/tt&amp;gt; die ein JavaScript-Array mit Werten in ein richtiges float-Array umwandelt. Dieses &amp;lt;tt&amp;gt;WebGLFloatArray&amp;lt;/tt&amp;gt; wird dann an OpenGL übergeben. Zusätzlich gibt es auch die Klassen &amp;lt;tt&amp;gt;WebGLByteArray&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;WebGLShortArray&amp;lt;/tt&amp;gt; und &amp;lt;tt&amp;gt;WebGLIntArray&amp;lt;/tt&amp;gt;. Außerdem existieren auch &amp;lt;tt&amp;gt;WebGLUnsignedByteArray&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;WebGLUnsignedShortArray&amp;lt;/tt&amp;gt; und &amp;lt;tt&amp;gt;WebGLUnsignedIntArray&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Leider existiert im Zusammenhang mit [[glVertexAttribPointer]] ein Bug in der aktuellen Firefox-Implementierung. Aus Sicherheitsgründen wird die mindestens notwendige Größe eines Vertexbuffers geprüft bevor darauf zugegriffen werden kann. Sofern wie im Beispiel ein Interleaved-VBO verwendet wird, wird diese [https://bugzilla.mozilla.org/show_bug.cgi?id=521667 Größe leider falsch berechnet]. Um den Bug zu umgehen müssen im Augenblick Indices benutzt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// define some vertexdata&lt;br /&gt;
var vertices = [&lt;br /&gt;
    // position XYZ, normal XYZ, texcoord UV =&amp;gt; 8 floats per vertex&lt;br /&gt;
    -0.5,  0.5,  0.0,  0.6,  0.0,  0.8,  0.0,  0.0,&lt;br /&gt;
     0.5,  0.5,  0.0,  0.6,  0.0,  0.8,  1.0,  0.0,&lt;br /&gt;
    -0.5, -0.5,  0.0,  0.0,  0.0,  1.0,  0.0,  1.0,&lt;br /&gt;
     0.5, -0.5,  0.0,  0.0,  0.6,  0.8,  1.0,  1.0,&lt;br /&gt;
];&lt;br /&gt;
// we need also some indices because of this annoying Firefox-Bug:&lt;br /&gt;
// https://bugzilla.mozilla.org/show_bug.cgi?id=521667&lt;br /&gt;
var indices = [&lt;br /&gt;
   0, 1, 2, 2, 1, 3&lt;br /&gt;
];&lt;br /&gt;
// create VBO &amp;amp; IBO&lt;br /&gt;
var vbo = gl.createBuffer();&lt;br /&gt;
gl.bindBuffer(gl.ARRAY_BUFFER, vbo);&lt;br /&gt;
gl.bufferData(gl.ARRAY_BUFFER, new WebGLFloatArray(vertices), gl.STATIC_DRAW);&lt;br /&gt;
var ibo = gl.createBuffer();&lt;br /&gt;
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, ibo);&lt;br /&gt;
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new WebGLUnsignedShortArray(indices), gl.STATIC_DRAW);&lt;br /&gt;
&lt;br /&gt;
// ...&lt;br /&gt;
&lt;br /&gt;
// setup interleaved VBO and IBO&lt;br /&gt;
gl.bindBuffer(gl.ARRAY_BUFFER, vbo);&lt;br /&gt;
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, ibo);&lt;br /&gt;
gl.enableVertexAttribArray(0);&lt;br /&gt;
gl.enableVertexAttribArray(1);&lt;br /&gt;
gl.enableVertexAttribArray(2);&lt;br /&gt;
gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 8*4, 0*4); // position&lt;br /&gt;
gl.vertexAttribPointer(1, 3, gl.FLOAT, false, 8*4, 3*4); // normal&lt;br /&gt;
gl.vertexAttribPointer(2, 2, gl.FLOAT, false, 8*4, 6*4); // texcoord&lt;br /&gt;
&lt;br /&gt;
// draw the buffer&lt;br /&gt;
gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der schnellste Weg ein Mesh zu laden ist dessen Vertex- und Indexbuffer direkt als JavaScript-Array anzugeben. Die Daten können so nativ vom Browser geladen werden. Größere Meshes hat man natürlich ungern direkt im Quellcode und möchte diese auch vielleicht nicht direkt beim Start der Anwendung laden. Hier bietet sich eine eigene Datei an, die dann über ein [http://www.w3schools.com/XML/xml_http.asp XMLHttpRequest]-Objekt (Stichwort: [http://de.wikipedia.org/wiki/AJAX AJAX]) in JavaScript nachgeladen und anschließend dem Browser zum Parsen übergeben wird. So kann das Laden im Hintergrund realisiert werden.&lt;br /&gt;
&lt;br /&gt;
Ein Problem ist natürlich das Dateiformat. Bisher hat nach meinem Wissen noch niemand einen Benchmark versucht, aber das manuelle Parsen der Daten dauert bei einer JavaScript-Implementierung wahrscheinlich vergleichsweise lange. Außerdem dürfte es in JavaScript schwierig werden Binärdaten zu lesen. Wenn man Daten aus einer externen Datei laden möchte, bietet sich das JSON-Format an. Dieses kann mit der JavaScript-Funktion &amp;lt;tt&amp;gt;eval()&amp;lt;/tt&amp;gt; extrem schnell (da nativ) verarbeitet werden. Die folgenden Loader bzw. Konverter sind bekannt:&lt;br /&gt;
* Der [http://people.mozilla.com/~vladimir/webgl/spore/sporeview.html Spore Creature Viewer] lädt aus dem Spiel [http://www.spore.com/ Spore] exportierte Meshes direkt mit JavaScript. Spore benutzt das [http://www.collada.org/ COLLADA]-Format.&lt;br /&gt;
* Konverter für [http://en.wikipedia.org/wiki/Obj Wavefront OBJ] zu JavaScript-Arrays: [http://www.c3dl.org/index.php/c3dl-dev/wavefront-obj-file-to-javascript-arrays/ Beschreibung], [http://www.c3dl.org/index.php/download/ Download]&lt;br /&gt;
* Maxscript ([http://de.wikipedia.org/wiki/3ds_Max Autodesk 3ds Max]) welches JavaScript-Arrays exportiert: [http://www.c3dl.org/index.php/download/ Download]&lt;br /&gt;
* [http://www.khronos.org/message_boards/viewtopic.php?f=44&amp;amp;t=2171 Thread im Khronos-Forum] der sich mit dem effizienten Laden von Geometriedaten aus XML- und JSON-Formaten beschäftigt.&lt;br /&gt;
&lt;br /&gt;
Es lohnt sich übrigens diese großen JavaScript-Arrays so kompakt wie möglich zu schreiben. Alleine durch das Weglassen von unnötigen Leerzeichen spart man schnell einige 10 oder 100 kB bei der Dateigröße. Des weiteren erlaubt das HTTP-Protokoll auch die Übertragung mit GZIP-komprimierter Daten. Aktuelle Browser sollten dies nativ unterstützen, so dass keine eigene Implementierung der Komprimierung erforderlich ist. Allerdings muss der HTTP-Server entsprechend konfiguriert sein.&lt;br /&gt;
&lt;br /&gt;
===Texturen===&lt;br /&gt;
Das Laden von Texturen ist relativ einfach, da der Browser bereits über die nötige Infrastruktur zum Laden von Bildern in vielen Formaten bereitstellt. Etwas ungewohnt ist der asynchrone Ladevorgang: Ein Bild steht nicht sofort zur Verfügung, da dieses ja möglicherweise zuerst vom Server geladen werden muss. Sobald aber das Bild verfügbar ist wird das &amp;lt;tt&amp;gt;onload&amp;lt;/tt&amp;gt;-Event ausgelöst. Was im Fehlerfall geschehen soll wird über das &amp;lt;tt&amp;gt;onerror&amp;lt;/tt&amp;gt;-Event festgelegt.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function loadTexture(filename) {&lt;br /&gt;
    // preparations&lt;br /&gt;
    var texture = gl.createTexture();&lt;br /&gt;
    gl.bindTexture(gl.TEXTURE_2D, texture);&lt;br /&gt;
    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);&lt;br /&gt;
    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);&lt;br /&gt;
    var image = new Image();&lt;br /&gt;
&lt;br /&gt;
    // register event handlers&lt;br /&gt;
    image.onload = function() {&lt;br /&gt;
        gl.bindTexture(gl.TEXTURE_2D, texture);&lt;br /&gt;
        gl.texImage2D(gl.TEXTURE_2D, 0, image);&lt;br /&gt;
        gl.generateMipmap(gl.TEXTURE_2D);&lt;br /&gt;
        draw(); // texture now available, we can redraw the scene&lt;br /&gt;
    }&lt;br /&gt;
    image.onerror = function() {&lt;br /&gt;
        alert(&amp;quot;error while loading image '&amp;quot;+filename+&amp;quot;'.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // request image from server&lt;br /&gt;
    image.src = filename; &lt;br /&gt;
&lt;br /&gt;
    // return texture object (asynchronous loading, texture NOT available yet!)&lt;br /&gt;
    return texture;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ressourcen und Mathematik===&lt;br /&gt;
Dadurch das Ressourcen (Meshes, Texturen, Shader, ...) im Browser asynchron geladen werden, wird entsprechendes Management dieser Ressourcen erforderlich. Eine Ressource darf erst verwendet werden, wenn sie auch wirklich initialisiert wurde. Entsprechend müssen die zugehörigen Callbacks abgewartet werden. &lt;br /&gt;
&lt;br /&gt;
Eine einfache Lösung für dieses Problem ist ein Ressourcenmanager der alle Daten lädt oder zumindest weiß welche Ressourcen noch geladen werden müssen. Zu Beginn wird einfach nur der Text &amp;lt;tt&amp;gt;&amp;quot;Loading...&amp;quot;&amp;lt;/tt&amp;gt; angezeigt. Jede Ressource meldet sich beim Manager sobald sie verfügbar ist. Sobald alles korrekt initialisiert wurde kann der Ressourcenmanager die eigentliche Anwendung starten.&lt;br /&gt;
&lt;br /&gt;
Genau wie OpenGL 3.1 besitzt auch OpenGL ES 2.0 keine eigenen Mathematikfunktionen mehr. Einen guten Ansatz bietet hierbei das [http://wiki.delphigl.com/index.php/Tutorial_OpenGL3_Lineare_Algebra Lineare Algebra Tutorial von TAK2004]. Beliebt im Zusammenhang mit WebGL ist im Augenblick die [http://sylvester.jcoglan.com/ JavaScript-Bibliothek Sylvester] die grundlegende Vektor und Matrix Operationen bereitstellt. Die [http://bjartr.blogspot.com/2009/10/webgl-what-is-it-and-how-can-i-use-it_04.html WebGLU Library] versucht unter Rückgriff auf Sylvester die aus OpenGL 2.0 (und älter) bekannten Funktionen wie den Matrix-Stack zurückzubringen.&lt;br /&gt;
&lt;br /&gt;
Soweit von mir, im Anschluss findet ihr noch ein Beispiel sowie eine Liste von Links die nach Möglichkeit aktuell gehalten wird.&lt;br /&gt;
&lt;br /&gt;
'''Coolcat'''&lt;br /&gt;
{{TUTORIAL_NAVIGATION|[[Tutorial_GLScene]]|-}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Tutorial|WebGL]]&lt;br /&gt;
&lt;br /&gt;
==Beispiel==&lt;br /&gt;
Eine [[Tutorial_WebGL_Sample|Beispielanwendung]] die die hier vorgestellten Code-Schnippsel zusammenfügt ist [[Tutorial_WebGL_Sample|hier]] verfügbar.&lt;br /&gt;
&lt;br /&gt;
[[Bild:webgl-sample.jpg|320px]]&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* Offizielle Dokumentation&lt;br /&gt;
** [https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/doc/spec/WebGL-spec.html WebGL Specification, Working Draft 10 December 2009]&lt;br /&gt;
** [http://www.khronos.org/opengles/2_X/ OpenGL ES 2.X and the OpenGL ES Shading Language]&lt;br /&gt;
** [http://www.khronos.org/registry/gles/ Khronos OpenGL ES API Registry]&lt;br /&gt;
** [http://www.khronos.org/registry/gles/specs/2.0/es_full_spec_2.0.24.pdf OpenGL ES 2.0.24  Full Specification]&lt;br /&gt;
** [http://www.khronos.org/registry/gles/specs/2.0/GLSL_ES_Specification_1.0.17.pdf OpenGL ES Shading Language 1.0.17]&lt;br /&gt;
** [http://www.khronos.org/developers/resources/webgl/ WebGL Implementations, Tutorials and Sample Code]&lt;br /&gt;
** [http://www.khronos.org/message_boards/viewforum.php?f=35 Offizielles WebGL Forum]&lt;br /&gt;
* Bibliotheken&lt;br /&gt;
** [http://bjartr.blogspot.com/2009/10/webgl-what-is-it-and-how-can-i-use-it_04.html WebGL Tutorial and WebGLU Library]&lt;br /&gt;
** [http://sylvester.jcoglan.com/ Sylvester - Vector and Matrix math for JavaScript]&lt;br /&gt;
* Portierung der NeHe OpenGL Tutorials zu WebGL:&lt;br /&gt;
** [http://learningwebgl.com/blog/?p=11 Lesson 0: Getting started]&lt;br /&gt;
** [http://learningwebgl.com/blog/?p=28 Lesson 1: A triangle and a square]&lt;br /&gt;
** [http://learningwebgl.com/blog/?p=134 Lesson 2: Adding colour]&lt;br /&gt;
** [http://learningwebgl.com/blog/?p=239 Lesson 3: A bit of movement]&lt;br /&gt;
** [http://learningwebgl.com/blog/?p=370 Lesson 4: Some real 3D objects]&lt;br /&gt;
** [http://learningwebgl.com/blog/?p=507 Lesson 5: Introducing textures]&lt;br /&gt;
** [http://learningwebgl.com/blog/?p=571 Lesson 6: Keyboard input and texture filters]&lt;br /&gt;
** [http://learningwebgl.com/blog/?p=684 Lesson 7: Basic directional and ambient lighting]&lt;br /&gt;
** [http://learningwebgl.com/blog/?p=859 Lesson 8: The depth buffer, transparency and blending]&lt;br /&gt;
** [http://learningwebgl.com/blog/?p=1008 Lesson 9: Improving the code structure with lots of moving objects]&lt;br /&gt;
** [http://learningwebgl.com/blog/?p=1067 Lesson 10: Loading a world, and the most basic kind of camera]&lt;br /&gt;
&lt;br /&gt;
* Demos&lt;br /&gt;
** [http://people.mozilla.com/~vladimir/webgl/spore/sporeview.html Spore Creature Viewer], ein Viewer für [http://www.collada.org/ COLLADA]-Meshes, allerdings nur für aus dem Spiel [http://www.spore.com/ Spore] exportierte Meshes.&lt;br /&gt;
** [http://cs.helsinki.fi/u/ilmarihe/metatunnel.html Metatunnel]&lt;br /&gt;
** [http://code.google.com/p/chromium/source/browse/trunk/samples/webgl Beispiele für Chromium], funktionieren scheinbar nicht mit Firefox&lt;br /&gt;
** [http://learningwebgl.com/blog/?p=205 Zooming into the Mandelbrot set in a WebGL fragment shader]&lt;br /&gt;
** [http://bjartr.blogspot.com/2009/10/interactive-shader-editing-with-webgl.html Interactive Shader Editing with WebGL and the WebGLU Library]&lt;br /&gt;
* Sonstiges&lt;br /&gt;
** [http://www.planet-webgl.org/ Planet WebGL], eine Aggregation verschiedener Blogs über WebGL&lt;/div&gt;</summary>
		<author><name>Darkinsanity</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Vorlage:dglOpenGL_History&amp;diff=25078</id>
		<title>Vorlage:dglOpenGL History</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Vorlage:dglOpenGL_History&amp;diff=25078"/>
				<updated>2011-03-15T10:22:29Z</updated>
		
		<summary type="html">&lt;p&gt;Darkinsanity: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pascal&amp;gt;Version 1.0   - Initial Release&lt;br /&gt;
&lt;br /&gt;
Version 1.1   - Added PPointer in Tpyessection for compatibility with Delphi&lt;br /&gt;
                versions lower than 7                                    (SW)&lt;br /&gt;
              - Added a function named RaiseLastOSError including a comment&lt;br /&gt;
                on how to make it run under Delphi versions lower than 7 (SW)&lt;br /&gt;
              - Added some data types according to the GL-Syntax         (SW)&lt;br /&gt;
&lt;br /&gt;
Version 1.2   - Fixed some problems with getting the addresses of some&lt;br /&gt;
                Extensions (e.g. glTexImage3D) where the EXT/ARB did work&lt;br /&gt;
                but not the core-functions                               (SW)&lt;br /&gt;
&lt;br /&gt;
Version 1.3   - A second call to ReadimplementationProperties won't&lt;br /&gt;
                revert to the default libs anymore                       (MW)&lt;br /&gt;
              - Libraries now will be released if necessary              (MW)&lt;br /&gt;
&lt;br /&gt;
Version 1.3a  - Small fixes for glSlang-functions                        (SW)&lt;br /&gt;
&lt;br /&gt;
Version 1.3b  - Fixed a small bug with GL_ARB_shader_objects, that lead&lt;br /&gt;
                lead to that extension not loaded correctly              (SW)&lt;br /&gt;
&lt;br /&gt;
Version 1.3c  - More GL 1.5 compliance by FOG_COORD_xx and&lt;br /&gt;
                ARB-less VBO and occlusion query routines                (MW)&lt;br /&gt;
&lt;br /&gt;
Version 1.3d  - Fixed linebreaks (should now be corrected under D5)      (SW)&lt;br /&gt;
&lt;br /&gt;
Version 1.4   - Changed header to correspond to the OpenGL-Shading&lt;br /&gt;
              - Language specification 1.10 :&lt;br /&gt;
                 - Added new GL_SAMPLER_*-Constants&lt;br /&gt;
                 - Added Constant GL_SHADING_LANGUAGE_VERSION_ARB&lt;br /&gt;
                 - Added Constant GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB&lt;br /&gt;
              - Added Constant GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB    (SW)&lt;br /&gt;
&lt;br /&gt;
Version 1.4a  - Fixed a missing stdcall for glBindAttribLocationARB      (SW)&lt;br /&gt;
&lt;br /&gt;
Version 1.4b  - Fixed declaration for glUniform*(f/i)vARB (added count)  (MW)&lt;br /&gt;
              - glCompileShaderARB changed from function to procedure    (MW)&lt;br /&gt;
&lt;br /&gt;
Version 1.5   - Added support for FreePascal                             (BR)&lt;br /&gt;
              - Added type TGLVectorf3/TGLVector3f                       (SW)&lt;br /&gt;
&lt;br /&gt;
Version 1.6   - Added Extension GL_EXT_framebuffer_object                (SX)&lt;br /&gt;
&lt;br /&gt;
Version 1.7   - Added Extension GL_ARB_fragment_program_shadow           (SX)&lt;br /&gt;
              - Added Extension GL_ARB_draw_buffers                      (SX)&lt;br /&gt;
              - Added Extension GL_ARB_texture_rectangle                 (SX)&lt;br /&gt;
              - Added Extension GL_ARB_color_buffer_float                (SX)&lt;br /&gt;
              - Added Extension GL_ARB_half_float_pixel                  (SX)&lt;br /&gt;
              - Added Extension GL_ARB_texture_float                     (SX)&lt;br /&gt;
              - Added Extension GL_ARB_pixel_buffer_object               (SX)&lt;br /&gt;
              - Added Extension GL_EXT_depth_bounds_test                 (SX)&lt;br /&gt;
              - Added Extension GL_EXT_texture_mirror_clamp              (SX)&lt;br /&gt;
              - Added Extension GL_EXT_blend_equation_separate           (SX)&lt;br /&gt;
              - Added Extension GL_EXT_pixel_buffer_object               (SX)&lt;br /&gt;
              - Added Extension GL_EXT_texture_compression_dxt1          (SX)&lt;br /&gt;
              - Added Extension GL_NV_fragment_program_option            (SX)&lt;br /&gt;
              - Added Extension GL_NV_fragment_program2                  (SX)&lt;br /&gt;
              - Added Extension GL_NV_vertex_program2_option             (SX)&lt;br /&gt;
              - Added Extension GL_NV_vertex_program3                    (SX)&lt;br /&gt;
&lt;br /&gt;
Version 1.8   - Added explicit delegate type definitions                 (LM)&lt;br /&gt;
              - Added .Net 1.1 Support                                   (LM)&lt;br /&gt;
              - Added .Net overloaded functions                          (LM)&lt;br /&gt;
              - Added delayed extension loading and stubs                (LM)&lt;br /&gt;
              - Added automatic InitOpenGL call in CreateRenderingContext(LM)&lt;br /&gt;
              - Added extra Read_* function                              (LM)&lt;br /&gt;
&lt;br /&gt;
Version 2.0   - fixed some Problem with version string and damn drivers.&lt;br /&gt;
                String 1.15 identified as OpenGL 1.5 not as OpenGL 1.1   (SX)&lt;br /&gt;
              - Removed unexisting extension GL_ARB_texture_mirror_repeat(SX)&lt;br /&gt;
              - Added Extension WGL_ARB_pixel_format_float               (SX)&lt;br /&gt;
              - Added Extension GL_EXT_stencil_clear_tag                 (SX)&lt;br /&gt;
              - Added Extension GL_EXT_texture_rectangle                 (SX)&lt;br /&gt;
              - Added Extension GL_EXT_texture_edge_clamp                (SX)&lt;br /&gt;
              - Some 1.5 Core Consts added (now completed)               (SX)&lt;br /&gt;
              - gluProject need pointer for not .net                     (SX)&lt;br /&gt;
              - gluUnProject need pointer for not .net                   (SX)&lt;br /&gt;
              - wglUseFontOutlines* need pointer for not .net            (SX)&lt;br /&gt;
              - wglSwapMultipleBuffers need pointer for not .net         (SX)&lt;br /&gt;
              - Bug with wglGetExtensionsStringEXT removed&lt;br /&gt;
                different type for .net                                  (SX)&lt;br /&gt;
              - Added OpenGL 2.0 Core                                    (SX)&lt;br /&gt;
&lt;br /&gt;
Version 2.0.1 - fixed some problems with glGetActiveAttrib in 2.0 Core   (SX)&lt;br /&gt;
              - fixes some problems with gluProject                      (SX)&lt;br /&gt;
              - fixes some problems with gluUnProject                    (SX)&lt;br /&gt;
              - fixes some problems with gluTessVertex                   (SX)&lt;br /&gt;
              - fixes some problems with gluLoadSamplingMatrices         (SX)&lt;br /&gt;
&lt;br /&gt;
Version 2.1   - Removed .NET Support                                     (SX)&lt;br /&gt;
              - Better support for Linux                                 (SX)&lt;br /&gt;
              - Better Codeformation                                     (SX)&lt;br /&gt;
              - Added some more Vector/Matrix types                      (SX)&lt;br /&gt;
              - Added OpenGL 2.1 Core                                    (SX)&lt;br /&gt;
              - Added Extension GL_EXT_packed_depth_stencil              (SX)&lt;br /&gt;
              - Added Extension GL_EXT_texture_sRGB                      (SX)&lt;br /&gt;
              - Added Extension GL_EXT_framebuffer_blit                  (SX)&lt;br /&gt;
              - Added Extension GL_EXT_framebuffer_multisample           (SX)&lt;br /&gt;
              - Added Extension GL_EXT_timer_query                       (SX)&lt;br /&gt;
              - Added Extension GL_EXT_gpu_program_parameters            (SX)&lt;br /&gt;
              - Added Extension GL_EXT_bindable_uniform                  (SX)&lt;br /&gt;
              - Added Extension GL_EXT_draw_buffers2                     (SX)&lt;br /&gt;
              - Added Extension GL_EXT_draw_instanced                    (SX)&lt;br /&gt;
              - Added Extension GL_EXT_framebuffer_sRGB                  (SX)&lt;br /&gt;
              - Added Extension GL_EXT_geometry_shader4                  (SX)&lt;br /&gt;
              - Added Extension GL_EXT_gpu_shader4                       (SX)&lt;br /&gt;
              - Added Extension GL_EXT_packed_float                      (SX)&lt;br /&gt;
              - Added Extension GL_EXT_texture_array                     (SX)&lt;br /&gt;
              - Added Extension GL_EXT_texture_buffer_object             (SX)&lt;br /&gt;
              - Added Extension GL_EXT_texture_compression_latc          (SX)&lt;br /&gt;
              - Added Extension GL_EXT_texture_compression_rgtc          (SX)&lt;br /&gt;
              - Added Extension GL_EXT_texture_integer                   (SX)&lt;br /&gt;
              - Added Extension GL_EXT_texture_shared_exponent           (SX)&lt;br /&gt;
              - Added Extension GL_NV_depth_buffer_float                 (SX)&lt;br /&gt;
              - Added Extension GL_NV_fragment_program4                  (SX)&lt;br /&gt;
              - Added Extension GL_NV_framebuffer_multisample_coverage   (SX)&lt;br /&gt;
              - Added Extension GL_NV_geometry_program4                  (SX)&lt;br /&gt;
              - Added Extension GL_NV_gpu_program4                       (SX)&lt;br /&gt;
              - Added Extension GL_NV_parameter_buffer_object            (SX)&lt;br /&gt;
              - Added Extension GL_NV_transform_feedback                 (SX)&lt;br /&gt;
              - Added Extension GL_NV_vertex_program4                    (SX)&lt;br /&gt;
&lt;br /&gt;
Version 3.0   - fixed some consts of GL_EXT_texture_shared_exponent       (SX)&lt;br /&gt;
              - possible better support for mac                          (SX)&lt;br /&gt;
              - Added OpenGL 3.0 Core                                    (SX)&lt;br /&gt;
              - Added Extension GL_ARB_depth_buffer_float                (SX)&lt;br /&gt;
              - Added Extension GL_ARB_draw_instanced                    (SX)&lt;br /&gt;
              - Added Extension GL_ARB_framebuffer_object                (SX)&lt;br /&gt;
              - Added Extension GL_ARB_framebuffer_sRGB                  (SX)&lt;br /&gt;
              - Added Extension GL_ARB_geometry_shader4                  (SX)&lt;br /&gt;
              - Added Extension GL_ARB_half_float_vertex                 (SX)&lt;br /&gt;
              - Added Extension GL_ARB_instanced_arrays                  (SX)&lt;br /&gt;
              - Added Extension GL_ARB_map_buffer_range                  (SX)&lt;br /&gt;
              - Added Extension GL_ARB_texture_buffer_object             (SX)&lt;br /&gt;
              - Added Extension GL_ARB_texture_compression_rgtc          (SX)&lt;br /&gt;
              - Added Extension GL_ARB_texture_rg                        (SX)&lt;br /&gt;
              - Added Extension GL_ARB_vertex_array_object               (SX)&lt;br /&gt;
              - Added Extension GL_NV_conditional_render                 (SX)&lt;br /&gt;
              - Added Extension GL_NV_present_video                      (SX)&lt;br /&gt;
              - Added Extension GL_EXT_transform_feedback                (SX)&lt;br /&gt;
              - Added Extension GL_EXT_direct_state_access               (SX)&lt;br /&gt;
              - Added Extension GL_EXT_vertex_array_bgra                 (SX)&lt;br /&gt;
              - Added Extension GL_EXT_texture_swizzle                   (SX)&lt;br /&gt;
              - Added Extension GL_NV_explicit_multisample               (SX)&lt;br /&gt;
              - Added Extension GL_NV_transform_feedback2                (SX)&lt;br /&gt;
              - Added Extension WGL_ARB_create_context                   (SX)&lt;br /&gt;
              - Added Extension WGL_NV_present_video                     (SX)&lt;br /&gt;
              - Added Extension WGL_NV_video_out                         (SX)&lt;br /&gt;
              - Added Extension WGL_NV_swap_group                        (SX)&lt;br /&gt;
              - Added define DGL_TINY_HEADER to suppress automatic&lt;br /&gt;
                function loading                                         (SX)&lt;br /&gt;
              - glProcedure renamed to dglGetProcAddress and now it's&lt;br /&gt;
                visible from outside the unit to custom load functions   (SX)&lt;br /&gt;
              - dglCheckExtension added to check if an extension exists  (SX)&lt;br /&gt;
              - Read_GL_ARB_buffer_object renamed to&lt;br /&gt;
                Read_GL_ARB_vertex_buffer_object                         (SX)&lt;br /&gt;
&lt;br /&gt;
Version 3.0.1 - fixed a problem with fpc                                (SX)&lt;br /&gt;
&lt;br /&gt;
Version 3.0.2 - fixed a problem with WGL_ARB_create_context             (SX)&lt;br /&gt;
&lt;br /&gt;
Version 3.2   - Functions from GL_VERSION_3_0 where updated              (SX)&lt;br /&gt;
              - Functions from GL_ARB_map_buffer_range where updated     (SX)&lt;br /&gt;
              - Functions from GL_NV_present_video where added           (SX)&lt;br /&gt;
              - Added consts of GL_ARB_instanced_arrays                  (SX)&lt;br /&gt;
              - Defines to identify Delphi was changed (prevent for          &lt;br /&gt;
                feature maintenance)                                     (SX)&lt;br /&gt;
              - Added Extension GL_ATI_meminfo                           (SX)&lt;br /&gt;
              - Added Extension GL_AMD_performance_monitor               (SX)&lt;br /&gt;
              - Added Extension GL_AMD_texture_texture4                  (SX)&lt;br /&gt;
              - Added Extension GL_AMD_vertex_shader_tesselator          (SX)&lt;br /&gt;
              - Added Extension GL_EXT_provoking_vertex                  (SX)&lt;br /&gt;
              - Added Extension WGL_AMD_gpu_association                  (SX)&lt;br /&gt;
              - Added OpenGL 3.1 Core                                    (SX)&lt;br /&gt;
              - All deprecated stuff can be disabled if you undef the        &lt;br /&gt;
                define DGL_DEPRECATED                                    (SX)&lt;br /&gt;
              - Added Extension GL_ARB_uniform_buffer_object             (SX)&lt;br /&gt;
              - Added Extension GL_ARB_compatibility                     (SX)&lt;br /&gt;
              - Added Extension GL_ARB_copy_buffer                       (SX)&lt;br /&gt;
              - Added Extension GL_ARB_shader_texture_lod                (SX)&lt;br /&gt;
              - Remove function from GL_NV_present_video                 (SX)&lt;br /&gt;
              - Added Extension WGL_3DL_stereo_control                   (SX)&lt;br /&gt;
              - Added Extension GL_EXT_texture_snorm                     (SX)&lt;br /&gt;
              - Added Extension GL_AMD_draw_buffers_blend                (SX)&lt;br /&gt;
              - Added Extension GL_APPLE_texture_range                   (SX)&lt;br /&gt;
              - Added Extension GL_APPLE_float_pixels                    (SX)&lt;br /&gt;
              - Added Extension GL_APPLE_vertex_program_evaluators       (SX)&lt;br /&gt;
              - Added Extension GL_APPLE_aux_depth_stencil               (SX)&lt;br /&gt;
              - Added Extension GL_APPLE_object_purgeable                (SX)&lt;br /&gt;
              - Added Extension GL_APPLE_row_bytes                       (SX)&lt;br /&gt;
              - Added OpenGL 3.2 Core                                    (SX)&lt;br /&gt;
              - Added Extension GL_ARB_depth_clamp                       (SX)&lt;br /&gt;
              - Added Extension GL_ARB_draw_elements_base_vertex         (SX)&lt;br /&gt;
              - Added Extension GL_ARB_fragment_coord_conventions        (SX)&lt;br /&gt;
              - Added Extension GL_ARB_provoking_vertex                  (SX)&lt;br /&gt;
              - Added Extension GL_ARB_seamless_cube_map                 (SX)&lt;br /&gt;
              - Added Extension GL_ARB_sync                              (SX)&lt;br /&gt;
              - Added Extension GL_ARB_texture_multisample               (SX)&lt;br /&gt;
              - Added Extension GL_ARB_vertex_array_bgra                 (SX)&lt;br /&gt;
              - Added Extension GL_ARB_draw_buffers_blend                (SX)&lt;br /&gt;
              - Added Extension GL_ARB_sample_shading                    (SX)&lt;br /&gt;
              - Added Extension GL_ARB_texture_cube_map_array            (SX)&lt;br /&gt;
              - Added Extension GL_ARB_texture_gather                    (SX)&lt;br /&gt;
              - Added Extension GL_ARB_texture_query_lod                 (SX)&lt;br /&gt;
              - Added Extension WGL_ARB_create_context_profile           (SX)&lt;br /&gt;
              - Added GLX Core up to Version 1.4                         (SX)&lt;br /&gt;
              - Added Extension GLX_ARB_multisample                      (SX)&lt;br /&gt;
              - Added Extension GLX_ARB_fbconfig_float                   (SX)&lt;br /&gt;
              - Added Extension GLX_ARB_get_proc_address                 (SX)&lt;br /&gt;
              - Added Extension GLX_ARB_create_context                   (SX)&lt;br /&gt;
              - Added Extension GLX_ARB_create_context_profile           (SX)&lt;br /&gt;
              - Added Extension GLX_EXT_visual_info                      (SX)&lt;br /&gt;
              - Added Extension GLX_EXT_visual_rating                    (SX)&lt;br /&gt;
              - Added Extension GLX_EXT_import_context                   (SX)&lt;br /&gt;
              - Added Extension GLX_EXT_fbconfig_packed_float            (SX)&lt;br /&gt;
              - Added Extension GLX_EXT_framebuffer_sRGB                 (SX)&lt;br /&gt;
              - Added Extension GLX_EXT_texture_from_pixmap              (SX)&lt;br /&gt;
&lt;br /&gt;
Version 3.2.1 - Fixed some problems with Delphi &amp;lt; 6                      (SX)&lt;br /&gt;
&lt;br /&gt;
Version 3.2.2 - Added Extension GL_APPLE_rgb_422                         (SX)&lt;br /&gt;
              - Added Extension GL_EXT_separate_shader_objects           (SX)&lt;br /&gt;
              - Added Extension GL_NV_video_capture                      (SX)&lt;br /&gt;
              - Added Extension GL_NV_copy_image                         (SX)&lt;br /&gt;
              - Added Extension GL_NV_parameter_buffer_object2           (SX)&lt;br /&gt;
              - Added Extension GL_NV_shader_buffer_load                 (SX)&lt;br /&gt;
              - Added Extension GL_NV_vertex_buffer_unified_memory       (SX)&lt;br /&gt;
              - Added Extension GL_NV_texture_barrier                    (SX)&lt;br /&gt;
              - Variable GL_EXT_texture_snorm will be filled             (SX)&lt;br /&gt;
              - Variable GL_APPLE_row_bytes will be filled               (SX)&lt;br /&gt;
              - Added Extension WGL_NV_video_capture                     (SX)&lt;br /&gt;
              - Added Extension WGL_NV_copy_image                        (SX)&lt;br /&gt;
              - WGL_NV_video_out now named WGL_NV_video_output           (SX)&lt;br /&gt;
              - Added Extension GLX_EXT_swap_control                     (SX)&lt;br /&gt;
&lt;br /&gt;
Version 3.2.3 - Fixed a Problem with glGetAttribLocation                (SX)&lt;br /&gt;
              - Added const GL_UNIFORM_BUFFER_EXT                        (SX)&lt;br /&gt;
              - Functions of GL_NV_texture_barrier now will be loaded    (SX)&lt;br /&gt;
&lt;br /&gt;
Version 4.0   - Changes on Extension GL_ARB_texture_gather               (SX)&lt;br /&gt;
              - Changes on Extension GL_NV_shader_buffer_load            (SX)&lt;br /&gt;
              - Added OpenGL 3.3 Core                                    (SX)&lt;br /&gt;
              - Added OpenGL 4.0 Core                                    (SX)&lt;br /&gt;
              - Added Extension GL_AMD_shader_stencil_export             (SX)&lt;br /&gt;
              - Added Extension GL_AMD_seamless_cubemap_per_texture      (SX)&lt;br /&gt;
              - Added Extension GL_ARB_shading_language_include          (SX)&lt;br /&gt;
              - Added Extension GL_ARB_texture_compression_bptc          (SX)&lt;br /&gt;
              - Added Extension GL_ARB_blend_func_extended               (SX)&lt;br /&gt;
              - Added Extension GL_ARB_explicit_attrib_location          (SX)&lt;br /&gt;
              - Added Extension GL_ARB_occlusion_query2                  (SX)&lt;br /&gt;
              - Added Extension GL_ARB_sampler_objects                   (SX)&lt;br /&gt;
              - Added Extension GL_ARB_shader_bit_encoding               (SX)&lt;br /&gt;
              - Added Extension GL_ARB_texture_rgb10_a2ui                (SX)&lt;br /&gt;
              - Added Extension GL_ARB_texture_swizzle                   (SX)&lt;br /&gt;
              - Added Extension GL_ARB_timer_query                       (SX)&lt;br /&gt;
              - Added Extension GL_ARB_vertex_type_2_10_10_10_rev        (SX)&lt;br /&gt;
              - Added Extension GL_ARB_draw_indirect                     (SX)&lt;br /&gt;
              - Added Extension GL_ARB_gpu_shader5                       (SX)&lt;br /&gt;
              - Added Extension GL_ARB_gpu_shader_fp64                   (SX)&lt;br /&gt;
              - Added Extension GL_ARB_shader_subroutine                 (SX)&lt;br /&gt;
              - Added Extension GL_ARB_tessellation_shader               (SX)&lt;br /&gt;
              - Added Extension GL_ARB_texture_buffer_object_rgb32       (SX)&lt;br /&gt;
              - Added Extension GL_ARB_transform_feedback2               (SX)&lt;br /&gt;
              - Added Extension GL_ARB_transform_feedback3               (SX)&lt;br /&gt;
&lt;br /&gt;
Version 4.1   - Possible fix some strange linux behavior                 (SX)&lt;br /&gt;
              - All function uses GL instead of TGL types                (SX)&lt;br /&gt;
              - GL_AMD_vertex_shader_tesselator will be read now         (SX)&lt;br /&gt;
              - GL_AMD_draw_buffers_blend will be read now               (SX)&lt;br /&gt;
              - Changes on glStencilFuncSeparate (GL_2_0)                (SX)&lt;br /&gt;
              - Changes on GL_VERSION_3_2                                (SX)&lt;br /&gt;
              - Changes on GL_VERSION_3_3                                (SX)&lt;br /&gt;
              - Changes on GL_VERSION_4_0                                (SX)&lt;br /&gt;
              - Changes on GL_ARB_sample_shading                         (SX)&lt;br /&gt;
              - Changes on GL_ARB_texture_cube_map_array                 (SX)&lt;br /&gt;
              - Changes on GL_ARB_gpu_shader5                            (SX)&lt;br /&gt;
              - Changes on GL_ARB_transform_feedback3                    (SX)&lt;br /&gt;
              - Changes on GL_ARB_sampler_objects                        (SX)&lt;br /&gt;
              - Changes on GL_ARB_gpu_shader_fp64                        (SX)&lt;br /&gt;
              - Changes on GL_APPLE_element_array                        (SX)&lt;br /&gt;
              - Changes on GL_APPLE_vertex_array_range                   (SX)&lt;br /&gt;
              - Changes on GL_NV_transform_feedback                      (SX)&lt;br /&gt;
              - Changes on GL_NV_vertex_buffer_unified_memory            (SX)&lt;br /&gt;
              - Changes on GL_EXT_multi_draw_arrays                      (SX)&lt;br /&gt;
              - Changes on GL_EXT_direct_state_access                    (SX)&lt;br /&gt;
              - Changes on GL_AMD_performance_monitor                    (SX)&lt;br /&gt;
              - Changes on GL_AMD_seamless_cubemap_per_texture           (SX)&lt;br /&gt;
              - Changes on GL_EXT_geometry_shader4                       (SX)&lt;br /&gt;
              - Added OpenGL 4.1 Core                                    (SX)&lt;br /&gt;
              - Added Extension GL_ARB_ES2_compatibility                 (SX)&lt;br /&gt;
              - Added Extension GL_ARB_get_program_binary                (SX)&lt;br /&gt;
              - Added Extension GL_ARB_separate_shader_objects           (SX)&lt;br /&gt;
              - Added Extension GL_ARB_shader_precision                  (SX)&lt;br /&gt;
              - Added Extension GL_ARB_vertex_attrib_64bit               (SX)&lt;br /&gt;
              - Added Extension GL_ARB_viewport_array                    (SX)&lt;br /&gt;
              - Added Extension GL_ARB_cl_event                          (SX)&lt;br /&gt;
              - Added Extension GL_ARB_debug_output                      (SX)&lt;br /&gt;
              - Added Extension GL_ARB_robustness                        (SX)&lt;br /&gt;
              - Added Extension GL_ARB_shader_stencil_export             (SX)&lt;br /&gt;
              - Added Extension GL_AMD_conservative_depth                (SX)&lt;br /&gt;
              - Added Extension GL_EXT_shader_image_load_store           (SX)&lt;br /&gt;
              - Added Extension GL_EXT_vertex_attrib_64bit               (SX)&lt;br /&gt;
              - Added Extension GL_NV_gpu_program5                       (SX)&lt;br /&gt;
              - Added Extension GL_NV_gpu_shader5                        (SX)&lt;br /&gt;
              - Added Extension GL_NV_shader_buffer_store                (SX)&lt;br /&gt;
              - Added Extension GL_NV_tessellation_program5              (SX)&lt;br /&gt;
              - Added Extension GL_NV_vertex_attrib_integer_64bit        (SX)&lt;br /&gt;
              - Added Extension GL_NV_multisample_coverage               (SX)&lt;br /&gt;
              - Added Extension GL_AMD_name_gen_delete                   (SX)&lt;br /&gt;
              - Added Extension GL_AMD_debug_output                      (SX)&lt;br /&gt;
              - Added Extension GL_NV_vdpau_interop                      (SX)&lt;br /&gt;
              - Added Extension GL_AMD_transform_feedback3_lines_triangles (SX)&lt;br /&gt;
              - Added Extension GL_AMD_depth_clamp_separate              (SX)&lt;br /&gt;
              - Added Extension GL_EXT_texture_sRGB_decode               (SX)&lt;br /&gt;
              - Added Extension WGL_ARB_framebuffer_sRGB                 (SX)&lt;br /&gt;
              - Added Extension WGL_ARB_create_context_robustness        (SX)&lt;br /&gt;
              - Added Extension WGL_EXT_create_context_es2_profile       (SX)&lt;br /&gt;
              - Added Extension WGL_NV_multisample_coverage              (SX)&lt;br /&gt;
              - Added Extension GLX_ARB_vertex_buffer_object             (SX)&lt;br /&gt;
              - Added Extension GLX_ARB_framebuffer_sRGB                 (SX)&lt;br /&gt;
              - Added Extension GLX_ARB_create_context_robustness        (SX)&lt;br /&gt;
              - Added Extension GLX_EXT_create_context_es2_profile       (SX)&lt;br /&gt;
&lt;br /&gt;
Version 4.1a  - Fix for dglGetProcAddress with FPC and linux (def param) (SW)&lt;br /&gt;
&amp;lt;/pascal&amp;gt;&lt;/div&gt;</summary>
		<author><name>Darkinsanity</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=XMapWindow&amp;diff=25076</id>
		<title>XMapWindow</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=XMapWindow&amp;diff=25076"/>
				<updated>2011-03-08T13:51:04Z</updated>
		
		<summary type="html">&lt;p&gt;Darkinsanity: kleiner Fehler&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= XMapWindow =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Name ==&lt;br /&gt;
'''XMapWindow''' - Mapt ein Fenster&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Delphi-Spezifikation ==&lt;br /&gt;
 function '''XMapWindow'''(''dpy'': PDisplay; ''w'': Window): Integer;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Parameter ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; rules=&amp;quot;all&amp;quot;&lt;br /&gt;
! ''dpy''&lt;br /&gt;
| Gibt die Verbindung zum X-Server an&lt;br /&gt;
|-&lt;br /&gt;
! ''w''&lt;br /&gt;
| Gibt das Fenster an, welches gemapt werden soll&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
Die Funktion '''XMapWindow''' mapt das angegebene Fenster und alle seine Subfenster die eine Mapping-Anfrage gesendet haben. Das Mappen eines Fensters, dessen Elternfenster nicht gemappt ist, lässt das Fenster nicht erscheinen, jedoch wird es angezeigt sobald alle Elternfenster gemappt sind. Solch ein Fenster nennt man unsichtbar. Wenn alle Elternfenster gemappt wurden, wird das Fenster sichtbar, wird es, sofern es nicht von einem anderen Fenster verdeckt wird, auf dem Bildschirm angezeigt. Diese Funktion hat keinen Effekt wenn das Fenster bereits gemappt ist.&lt;br /&gt;
&lt;br /&gt;
Wenn das override-redirect-Flag des Fensters '''''False''''' ist und ein anderer Client '''''SubstructureRedirectMask''''' für das Elternfenster ausgewählt hat, generiert der X-Server ein '''''MapRequest''''' Ereignis und das Fenster wird von der Funktion '''XMapWindow''' nicht gemappt. Andernfalls wird das Fenster gemappt und der X-Server generiert ein '''''MapNotify'''''-Ereignis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen ==&lt;br /&gt;
'''BadWindow''' wird generiert, wenn ''w'' kein gültiges Fenster ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
[[XChangeWindowAttributes]], [[XConfigureWindow]], [[XCreateWindow]], [[XDestroyWindow]], [[XMoveWindow]], [[XMoveResizeWindow]], [[XRaiseWindow]], [[XResizeWindow]], [[XSetWindowBorderWidth]], [[XUnmapWindow]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:X|MapWindow]]&lt;/div&gt;</summary>
		<author><name>Darkinsanity</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=XUnmapWindow&amp;diff=25075</id>
		<title>XUnmapWindow</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=XUnmapWindow&amp;diff=25075"/>
				<updated>2011-03-08T13:50:46Z</updated>
		
		<summary type="html">&lt;p&gt;Darkinsanity: kleiner Fehler&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= XUnmapWindow =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Name ==&lt;br /&gt;
'''XUnmapWindow''' - Unmapt ein Fenster&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Delphi-Spezifikation ==&lt;br /&gt;
 function '''XUnmapWindow'''(''dpy'': PDisplay; ''w'': Window): Integer;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Parameter ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; rules=&amp;quot;all&amp;quot;&lt;br /&gt;
! ''dpy''&lt;br /&gt;
| Gibt die Verbindung zum X-Server an&lt;br /&gt;
|-&lt;br /&gt;
! ''w''&lt;br /&gt;
| Gibt das Fenster an, welches geunmapt werden soll&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
Die Funktion '''XUnmapWindow''' unmapt das angegebene Fenster und lässt den X-Server ein '''''UnmapNotify'''''-Ereignis generieren. Wenn das angegebene Fenster bereits ungemappt ist, hat '''XUnmapWindow''' keinen Effekt. Normale Sichtbarkeitsberechnungen von vorher verdeckten Fenstern werden durchgeführt. Jegliche Untefenster sind nicht mehr sichtbar bis das Elternfenster wieder gemappt wird. In anderen Worten: Die Unterfenster sind immernoch gemappt, jedoch nicht sichtbar bis das Elternfenster wieder gemappt wird. Das Unmappen eines Fenster generiert '''''Exposure'''''-Ereignisse für Fenster die vom angegebenen Fenster vorher verdeckt wurden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen ==&lt;br /&gt;
'''BadWindow''' wird generiert, wenn ''w'' kein gültiges Fenster ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
[[XChangeWindowAttributes]], [[XConfigureWindow]], [[XCreateWindow]], [[XDestroyWindow]], [[XMapWindow]], [[XMoveResizeWindow]], [[XRaiseWindow]], [[XResizeWindow]], [[XSetWindowBorderWidth]], [[XMoveWindow]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:X|UnmapWindow]]&lt;/div&gt;</summary>
		<author><name>Darkinsanity</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=XRaiseWindow&amp;diff=25074</id>
		<title>XRaiseWindow</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=XRaiseWindow&amp;diff=25074"/>
				<updated>2011-03-08T13:49:55Z</updated>
		
		<summary type="html">&lt;p&gt;Darkinsanity: Komplett übersetzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= XRaiseWindow =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Name ==&lt;br /&gt;
'''XUnmapWindow''' - Bringt ein Fenster in den Vordergrund&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Delphi-Spezifikation ==&lt;br /&gt;
 function '''XRaiseWindow'''(''dpy'': PDisplay; ''w'': Window): Integer;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Parameter ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; rules=&amp;quot;all&amp;quot;&lt;br /&gt;
! ''dpy''&lt;br /&gt;
| Gibt die Verbindung zum X-Server an&lt;br /&gt;
|-&lt;br /&gt;
! ''w''&lt;br /&gt;
| Gibt das Fenster an, welches nach vorne geholt werden soll&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
Die Funktion '''XRaiseWindow''' holt das angegebene Fenster nach oben auf den Stapel, so dass kein Geschwisterfenster es mehr überlappt. Wenn die Fenster als ein Stapel Papier auf dem Schreibtisch betrachtet werden, dann ist das nach vorne holen eines Fensters analog zum obendrauflegen eines bestimmten Blattes auf den Stapel, wenn die X- und Y-Koordinaten auf dem Tisch gleich bleiben. Das nach vorne holen eines Fensters kann '''''Exposure'''''-Ereignisse für das Fenster und seine gemappten Subfenster erzeugen, wenn sie vorher verdeckt waren.&lt;br /&gt;
&lt;br /&gt;
Wenn das override-redirect-Flag des Fensters '''''False''''' ist und ein anderer Client '''''SubstructureRedirectMask''''' für das Elternfenster ausgewählt hat, generiert der X-Server ein '''''ConfigureRequest''''' Ereignis und nichts geschieht. Andernfalls wird das Fenster nach vorne geholt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen ==&lt;br /&gt;
'''BadWindow''' wird generiert, wenn ''w'' kein gültiges Fenster ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
[[XChangeWindowAttributes]], [[XConfigureWindow]], [[XCreateWindow]], [[XDestroyWindow]], [[XMapWindow]], [[XMoveResizeWindow]], [[XUnampWindow]], [[XResizeWindow]], [[XSetWindowBorderWidth]], [[XMoveWindow]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:X|RaiseWindow]]&lt;/div&gt;</summary>
		<author><name>Darkinsanity</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=XUnmapWindow&amp;diff=25073</id>
		<title>XUnmapWindow</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=XUnmapWindow&amp;diff=25073"/>
				<updated>2011-03-08T13:39:39Z</updated>
		
		<summary type="html">&lt;p&gt;Darkinsanity: Komplett übersetzt. Vielleicht etwas zu wörtlich.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= XUnmapWindow =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Name ==&lt;br /&gt;
'''XUnmapWindow''' - Unmapt ein Fenster&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Delphi-Spezifikation ==&lt;br /&gt;
 function '''XUnmapWindow'''(''dpy'': PDisplay; ''w'': Window): Integer;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Parameter ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; rules=&amp;quot;all&amp;quot;&lt;br /&gt;
! ''dpy''&lt;br /&gt;
| Gibt die Verbindung zum X-Server an&lt;br /&gt;
|-&lt;br /&gt;
! ''w''&lt;br /&gt;
| Gibt das Fenster an, welches geunmapt werden soll&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
Die Funktion '''XUnmapWindow''' unmapt das angegebene Fenster und lässt den X-Server ein '''''UnmapNotify'''''-Ereignis generieren. Wenn das angegebene Fenster bereits ungemappt ist, hat '''XUnmapWindow''' keinen Effekt. Normale Sichtbarkeitsberechnungen von vorher verdeckten Fenstern werden durchgeführt. Jegliche Untefenster sind nicht mehr sichtbar bis das Elternfenster wieder gemappt wird. In anderen Worten: Die Unterfenster sind immernoch gemappt, jedoch nicht sichtbar bis das Elternfenster wieder gemappt wird. Das Unmappen eines Fenster generiert '''''Exposure'''''-Ereignisse für Fenster die vom angegebenen Fenster vorher verdeckt wurden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen ==&lt;br /&gt;
'''BadWindow''' wird generiert, wenn ''w'' kein gültiges Fenster ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
[[XChangeWindowAttributes]], [[XConfigureWindow]], [[XCreateWindow]], [[XDestroyWindow]], [[XMapWindow]], [[XMoveResizeWindow]], [[XRaiseWindow]], [[XResizeWindow]], [[XSetWindowBorderWidth]], [[XMoveWindow]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:X|MoveWindow]]&lt;/div&gt;</summary>
		<author><name>Darkinsanity</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=XMapWindow&amp;diff=25072</id>
		<title>XMapWindow</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=XMapWindow&amp;diff=25072"/>
				<updated>2011-03-08T13:27:27Z</updated>
		
		<summary type="html">&lt;p&gt;Darkinsanity: Die ersten zwei Absätze übersetzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= XMapWindow =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Name ==&lt;br /&gt;
'''XMapWindow''' - Mapt ein Fenster&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Delphi-Spezifikation ==&lt;br /&gt;
 function '''XMapWindow'''(''dpy'': PDisplay; ''w'': Window): Integer;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Parameter ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; rules=&amp;quot;all&amp;quot;&lt;br /&gt;
! ''dpy''&lt;br /&gt;
| Gibt die Verbindung zum X-Server an&lt;br /&gt;
|-&lt;br /&gt;
! ''w''&lt;br /&gt;
| Gibt das Fenster an, welches gemapt werden soll&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
Die Funktion '''XMapWindow''' mapt das angegebene Fenster und alle seine Subfenster die eine Mapping-Anfrage gesendet haben. Das Mappen eines Fensters, dessen Elternfenster nicht gemappt ist, lässt das Fenster nicht erscheinen, jedoch wird es angezeigt sobald alle Elternfenster gemappt sind. Solch ein Fenster nennt man unsichtbar. Wenn alle Elternfenster gemappt wurden, wird das Fenster sichtbar, wird es, sofern es nicht von einem anderen Fenster verdeckt wird, auf dem Bildschirm angezeigt. Diese Funktion hat keinen Effekt wenn das Fenster bereits gemappt ist.&lt;br /&gt;
&lt;br /&gt;
Wenn das override-redirect-Flag des Fensters '''''False''''' ist und ein anderer Client '''''SubstructureRedirectMask''''' für das Elternfenster ausgewählt hat, generiert der X-Server ein '''''MapRequest''''' Ereignis und das Fenster wird von der Funktion '''XMapWindow''' nicht gemappt. Andernfalls wird das Fenster gemappt und der X-Server generiert ein '''''MapNotify'''''-Ereignis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen ==&lt;br /&gt;
'''BadWindow''' wird generiert, wenn ''w'' kein gültiges Fenster ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
[[XChangeWindowAttributes]], [[XConfigureWindow]], [[XCreateWindow]], [[XDestroyWindow]], [[XMapWindow]], [[XMoveResizeWindow]], [[XRaiseWindow]], [[XResizeWindow]], [[XSetWindowBorderWidth]], [[XUnmapWindow]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:X|MoveWindow]]&lt;/div&gt;</summary>
		<author><name>Darkinsanity</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=dglOpenGL.pas/en&amp;diff=25071</id>
		<title>dglOpenGL.pas/en</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=dglOpenGL.pas/en&amp;diff=25071"/>
				<updated>2011-03-08T13:05:45Z</updated>
		
		<summary type="html">&lt;p&gt;Darkinsanity: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Warnung| '''Delphi is already shipping with an OpenGL header, but that header is ''outdated and also buggy''. Therefore we ''urge everyone to NOT use that header, especially as it lacks most of OpenGL's current functionality.'''''}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;[[Bild:Flag_german.gif]][[dglOpenGL.pas| Gehe zur deutschen Version dieser Seite ]][[Bild:Flag_german.gif]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=The DelphiGL header=&lt;br /&gt;
So to compensate for the flaws of the outdated and buggy default header that is shipped with Delphi, the [http://www.delphigl.com (german) Delphi OpenGL Community] is providing it's own header that's permanently updated to provide steady support for new OpenGL features and functionality. This makes updating to a new header version easy (usually backwards compatibility is preserved), and it's even possible to use the header with other pascal compilers like Freepascal.&lt;br /&gt;
&lt;br /&gt;
It includes all OpenGL functions (currently up-to and including OpenGL 4.1) as well as all GLU ('''OpenGL Utility Libary''') functions and supports all ARB, EXT, NV and ATI extensions. It also includes additional, though lesser common extensions from other vendors like Apple, HP and SGI.&lt;br /&gt;
&lt;br /&gt;
A special feature of this header are boolean variables for each included extension that are flagged upon initialisation (those boolean vars carry the same as their corresponding extensions), so you can quickly check whether an extension is support or not (instead of checking the strings returned by [[glGetString/en]]).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Licence/Terms of use==&lt;br /&gt;
The '''dglOpenGL.pas''' is distributed unter the terms and conditions of the '''Mozilla Public License Version 1.1'''. You can grab a copy of that licence [http://www.mozilla.org/MPL/MPL-1.1.html here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;The contents of the dglOpenGL.pas are used with permission, subject to&amp;lt;br&amp;gt;&lt;br /&gt;
the Mozilla Public License Version 1.1 (the &amp;quot;License&amp;quot;); you may&amp;lt;br&amp;gt;&lt;br /&gt;
not use this file except in compliance with the License. You may&amp;lt;br&amp;gt;&lt;br /&gt;
obtain a copy of the License at&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mozilla.org/MPL/MPL-1.1.html&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Software distributed under the License is distributed on an&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;AS IS&amp;quot; basis, WITHOUT WARRANTY OF ANY KIND, either express or&amp;lt;br&amp;gt;&lt;br /&gt;
implied. See the License for the specific language governing&amp;lt;br&amp;gt;&lt;br /&gt;
rights and limitations under the License.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==.NET support==&lt;br /&gt;
Due to lack of interest, .NET support has been removed as of header version 2.1!&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|The .Net header won't be developed any further, but reported errors may be fixed. So new OpenGL functionality can only be found in the normal header.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Initializing function pointers (crucial)==&lt;br /&gt;
Along with the removal of .NET support, support for loading methods dynamically has also been removed and is no longer possible with the standard header. So it's crucial to call either '''AtivateRenderingContext''' or '''ReadExtensions''' alongside with '''ReadImplementationProperties''' in your application before accessing any of the OpenGL functions. Otherwise you'll likely be prompted with an access violation at address 0x00000000. &lt;br /&gt;
&lt;br /&gt;
''So if you get such an access violation please check if you called the above functions!''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for '''initializing''' the OpenGL function pointers (''needs to be called before you access any OpenGL functions'') :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;pascal&amp;quot;&amp;gt;procedure OpenGLInit;&lt;br /&gt;
 begin&lt;br /&gt;
 InitOpenGL; // Don't forget, or first gl-Call will result in an access violation!&lt;br /&gt;
 MyDC := GetDC(...);&lt;br /&gt;
 MyRC := CreateRenderingContext(...);&lt;br /&gt;
 ActivateRenderingContext(MyDC, MyRC); // Necessary, will also load function pointers for all extension&lt;br /&gt;
 ...&lt;br /&gt;
 end;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for '''finishing''' the OpenGL render context (''should be called before quitting your application'') :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;pascal&amp;quot;&amp;gt;procedure OpenGLFinish;&lt;br /&gt;
 begin&lt;br /&gt;
 DeactivateRenderingContext; // Deactivates the current context&lt;br /&gt;
 wglDeleteContext(myRC);&lt;br /&gt;
 ReleaseDC(Handle, myDC);&lt;br /&gt;
 end;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
'''{{ArchivLink|file=dglOpenGL|text=Current dglOpenGL.pas}}'''&lt;br /&gt;
&lt;br /&gt;
(Supports ''OpenGL 4.1'', works with Delphi 4 and up and Freepascal))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''{{ArchivLink|file=dglOpenGL_net|text=Last dglOpenGL.pas wit .NET support}} (Supports ''OpenGL 2.1'')''&lt;br /&gt;
&lt;br /&gt;
''(Note : This header is'nt developed any further)''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''For Delphi 3 users :'''&lt;br /&gt;
''[[Benutzer:Mars|Mars]] has posted a version of the dglOpenGL.pas that will work with Delphi 3, you can get it here :&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.delphigl.com/forum/viewtopic.php?p=26697#25642 dglOpenGL.pas for Delphi 3] &amp;lt;br&amp;gt;&lt;br /&gt;
''(You need to be registered on the forums to download it)''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''There is also an inofficial version of this [http://www.delphigl.com/forum/viewtopic.php?t=4216 headers for C++].''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
{{dglOpenGL_History}}&lt;/div&gt;</summary>
		<author><name>Darkinsanity</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Tool&amp;diff=25070</id>
		<title>Tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Tool&amp;diff=25070"/>
				<updated>2011-03-07T18:35:11Z</updated>
		
		<summary type="html">&lt;p&gt;Darkinsanity: Letzter Verweis im Wiki auf NovodeX gegen PhysX getauscht&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Kostenlose Tools ==&lt;br /&gt;
&lt;br /&gt;
Kostenlose für OpenGL/3D-Spieleprogrammierung/3D-Grafik relevante Tools und Programme.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== OpenGL ===&lt;br /&gt;
{| {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;| Name, Link&lt;br /&gt;
!width=&amp;quot;75%&amp;quot;| Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
![http://www.realtech-vr.com/glview/ GLView]&lt;br /&gt;
|Tool welches Informationen über die auf einem Rechner vorhandene GL Implementation extrahiert und anzeigt. Unter anderem von welchem Hersteller die Implementation stammt und welche Extensions/GL-Version unterstützt wird.&lt;br /&gt;
|-&lt;br /&gt;
![http://delphi3d.net/hardware/index.php GLinfo]&lt;br /&gt;
|Tool welches Informationen über die auf einem Rechner vorhandene GL Implementation extrahiert und anzeigt. Es werden auch technische Informationen wie maximal zulässige Texturgröße angezeigt. Das Tool generiert ein Logfile was, wenn gewünscht, auch in die '''OpenGL Hardware Registry''' eingetragen werden kann.&lt;br /&gt;
|-&lt;br /&gt;
![http://www.gremedy.com/ gDEBugger]&lt;br /&gt;
| Mächtiger OpenGL/OpenCL Debugger, Profiler und Memory Analyzer.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Mathematik/Physik ===&lt;br /&gt;
{| {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;| Name, Link&lt;br /&gt;
!width=&amp;quot;75%&amp;quot;| Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
![http://www.amd.com/acml/ ACML]&lt;br /&gt;
| Bibliothek mit hochoptimierten Befehlen für Mathematische Berechnungen (C++, gut dokumentiert, AMD-optimiert)&lt;br /&gt;
|-&lt;br /&gt;
! [http://math-atlas.sourceforge.net/ ATLAS]&lt;br /&gt;
| Bibliothek basierend auf BLAS und LAPACK (C++/Fortran)&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.netlib.org/blas/ BLAS]&lt;br /&gt;
| Bibliothek mit optimierten Befehlen für lineare Algebra (Fortran 77)&lt;br /&gt;
|- &lt;br /&gt;
! [http://www.partow.net/projects/fastgeo/index.html FastGeo]&lt;br /&gt;
| Bibiothek mit optimierten mathematischen Funktionen die direkt für Delphi/FreePascal entwickelt wurde. Prozedural aufgebaut (nicht OOP)&lt;br /&gt;
|- &lt;br /&gt;
! [http://www.fftw.org/ FFTW]&lt;br /&gt;
| Bibliothek mit optimierten Befehlen für FFTs (als DLL mit C++/Pascal-Header erhältlich)&lt;br /&gt;
|- &lt;br /&gt;
! [http://www.netlib.org/lapack/ LAPACK]&lt;br /&gt;
| Bibliothek mit optimierten Befehlen für lineare Algebra (Fortran 77)&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.nvidia.de/object/nvidia_physx_de.html PhysX Engine]&lt;br /&gt;
| Eine der größten Physik-Engines&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.library.cornell.edu/nr/bookcpdf.html Numerical Recipes]&lt;br /&gt;
| Dokumentation mit vielen Beispielen zur Funktionsweise verschiedenster Algorythmen; die Bibel der Numeriker schlechthin&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2D/Texturen-Tools ===&lt;br /&gt;
&lt;br /&gt;
{| {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;| Name, Link&lt;br /&gt;
!width=&amp;quot;75%&amp;quot;| Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.lmnopc.com/bitmapfontbuilder/ Bitmap Font Builder] &lt;br /&gt;
| Erstellt 2D-Fonttexturen, mit diversen Einstellungsmöglichkeiten. Exportiert zudem auch noch die Dimensionen der Buchstaben.&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.saschawillems.de/?page_id=253 Explosion Texture Generator]&lt;br /&gt;
| Erstellt eine 2D-Textur mit einer animierten Explosion. Ideal für animierte Billboard-Explosionen.&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.planetside.co.uk/terragen/ Terragen]&lt;br /&gt;
| Ein besseres Tool zum Erstellen realistischer Skybox-Texturen gibt es nicht.&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.planetside.co.uk/terragen/tg2/tech_preview.shtml Terragen 2 Technology Preview]&lt;br /&gt;
| Obwohl noch die Technology Preview schon gut geeignet um sowohl Skyboxes als auch Terrain-Texturen mit Normalmaps zu rendern.&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.saschawillems.de/?page_id=92 TerrTexGen]&lt;br /&gt;
| Tool zur Erstellung von Terraintexturen. Oft und gerne genutzt.&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.bundysoft.com/L3DT/ L3DT]&lt;br /&gt;
| Der 'Large 3D Terrain Generator' (L3DT) erzeugt hochwertige 16bit Graustufen [[Heightmap|Heightmaps]] sowie Alphamaps und darf auch in der kostenlosen Version kommerziell genutzt werden.&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.texturesynthesis.com/texture.htm MRFsynthesis]&lt;br /&gt;
| Automatische Generierung von hochwertigen, kachelbaren Texturen mit beliebiger Auflösung aus Fotos oder anderen Quelltexturen. Ausführliche Beschreibung im [[Texturesynthesis|Texturesynthesis-Artikel]].&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.logarithmic.net/pfh/resynthesizer Resynthesizer]&lt;br /&gt;
| Ein Plugin für '''GIMP''' mit ähnlichen Funktionen wie '''MRFsynthesis''', jedoch mehr Features und höherer Geschwindigkeit. Ausführliche Beschreibung im [[Texturesynthesis|Texturesynthesis-Artikel]].&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.gimp.org/ GIMP]&lt;br /&gt;
| GNU Image Manipulation Tool. Gutes kostenloses Bildbearbeitungsprogramm das sich nicht unbedingt vor Photoshop &amp;amp; Co. (mal abgesehen von der UI) verstecken muss.&lt;br /&gt;
|-&lt;br /&gt;
! [http://web.bethere.co.uk/terabit/ Tattoo]&lt;br /&gt;
| Ein sog. 3D-Paint Tool, mit dem man direkt auf ein Modell zeichnen kann und so Texturen erstellen kann. Besonders für Leute die Probleme haben 2D-Texturen für komplexe Modelle zu erstellen ein tolles Programm. Das Tool unterstützt viele Modell- und Texturformate und ist für die nicht-kommerzielle Nutzung umsonst.&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.lysator.liu.se/~kand/caustics/ Caustics Generator]&lt;br /&gt;
| Ein sehr schönes Programm, dass Relief-Texturen aller Colleur erzeugen kann. Das Programm eignet sich auch zum automatischen Berechnen animierter Sequenzen, wie zum Beispiel einer Wasserbewegung in 30 Frames. Sowohl die Ränder als auch die Übergänge zeitlich werden so erstellt, dass alle Übergänge fließend wirken.&lt;br /&gt;
|-&lt;br /&gt;
! [http://neotextureedit.sourceforge.net/index.html NeoTextureEdit]&lt;br /&gt;
| NeoTextureEdit ist ein einfach zu benutzender, graphenbasierter OpenSource-Textureditor/-generator. Auf Basis von kontinuierlichen Funktionen und Filtern kann man Texturen beliebiger Größe und Auflösung erzeugen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3D-Tools ===&lt;br /&gt;
&lt;br /&gt;
{| {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;| Name, Link&lt;br /&gt;
!width=&amp;quot;75%&amp;quot;| Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.delgine.com/ DeleD]&lt;br /&gt;
| Mit Delphi entwickelter 3D-Editor, der speziell auf Spieleentwickler ausgerichtet ist. Zwar noch in Entwicklung, aber bereits mehr als brauchbar.&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.anim8or.com/ Anim8or]&lt;br /&gt;
| Kostenloser 3D-Modeller, allerdings fehlen (noch) einige nützliche Features wie z.B. UVW-Mapping.&lt;br /&gt;
|-&lt;br /&gt;
! [http://sourceforge.net/projects/wings/ Wings 3D]&lt;br /&gt;
| Freeware Polygon Modeller. Obwohl ihm noch einige Features fehlen, ist er einen Blick wert.&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.blender3d.org/ Blender3D]&lt;br /&gt;
| Sehr ausgereiftes und komplexes 3D Tool mit frei gestaltbarer Oberfläche. &lt;br /&gt;
* [http://blendpolis.serverpool.org/f/article.php blend.polis]- Deutsche Blender Seite mit Tutorials&lt;br /&gt;
* umfangreiches [http://www.trcoding.de/informatik/blender/index.html Einsteiger Tutorial]&lt;br /&gt;
* '''sehr gute''' [http://blenderunderground.com/category/video-tutorials/ Video-Tutorials] (englisch)&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.fluidstudios.com/ FSRad]&lt;br /&gt;
|Auf Lightmaps spezialisierter Radiosity Prozessor. &lt;br /&gt;
|-&lt;br /&gt;
! [http://www.delphigl.com/forum/viewtopic.php?t=2421 gl3ds]&lt;br /&gt;
| '''3ds''' Model-Loader (DGL-Projekt)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shaderentwicklung  ===&lt;br /&gt;
&lt;br /&gt;
{| {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;| Name, Link&lt;br /&gt;
!width=&amp;quot;75%&amp;quot;| Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.ati.com/developer/rendermonkey/index.html RenderMonkey 1.5]&lt;br /&gt;
| ATI's HLSL-Shader IDE. Jetzt auch endlich mit Support für glSlang.&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.opengl.org/sdk/tools/ShaderDesigner/ OpenGL Shader Designer]&lt;br /&gt;
| Gute Shader IDE für glSlang.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Sound ===&lt;br /&gt;
&lt;br /&gt;
{| {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;| Name, Link&lt;br /&gt;
!width=&amp;quot;75%&amp;quot;| Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.buzzmachines.com/ BUZZ]&lt;br /&gt;
| Komplettes Soundstudio für E-Sounds. Es existieren unmengen Plugins welche das verhalten von allen denkbaren Soundeffekten und Soundgeneratoren imitieren können.&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.bluemoon.ee/history/scwin/index.html Sound Club]&lt;br /&gt;
| Eine Art &amp;quot;Tracker&amp;quot; mit recht vielen Features, der dass Erstellen von Musik einfach macht. War mal Shareware, ist inzwischen aber als Freeware erhältlich.&lt;br /&gt;
|-&lt;br /&gt;
! [http://www-personal.monash.edu.au/~myless/catnap/pamela/index.html PAMELA]&lt;br /&gt;
| Vergleicht in Waveform abgespeicherte Sprache mit einem eingegebenem Text und ermittelt an welchem Zeitpunkt welche Laute vorkommen, und erstellt daraus eine Liste. Mit Hilfe dieser Liste kann man seine Figuren lippensynchron animieren.&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.madtracker.org/ MadTracker]&lt;br /&gt;
| Sehr ausgereifter, professioneller Tracker. Kann auch FastTracker-Module (*.xm) bearbeiten. Wer modulbasierte Musik in seinen Programmen nutzen will, sollte sich MadTracker auf jeden Fall ansehen.&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.modplug.com/ ModPlugTracker]&lt;br /&gt;
| Sehr ausgereifter und vielseitiger Tracker. Kann alle gängigen Module (*.mod, *.nst, *.s3m, *.stm, *.xm, *.it, *.mtm, *.okt, *.mdl, *.669, *.far) bearbeiten, sowie Midis und Waves importieren und exportieren. Auch einen Download wert: ModPlugPlayer, der kleine Bruder vom Tracker, der die oben genannten Module abspielen kann und das mit einer Vielzahl von Funktionen. So kann z.B. der Resampling-Mode eingestellt werden, oder die Geschwindigkeit des abgespielten Mods, sowie die Tonhöhe über Schieberegler verändern. Die beiden Programme können auch komprimierte Mods (*.mdz, *.s3z, *.xmz, *.itz), sowie die Unreal-Module (*.utx) bearbeiten.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Programmierung/IDE/Allgemein ===&lt;br /&gt;
&lt;br /&gt;
{| {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;| Name, Link&lt;br /&gt;
!width=&amp;quot;75%&amp;quot;| Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.prestosoft.com/ps.asp?page=edp_examdiff ExamDiff]&lt;br /&gt;
| Beschreibung: Visuelles Vergleichsprogramm für Text/Quellcode Dateien um Veränderungen an solchen Dateien zu suchen. (Freeware nur Pro Version kostenpflichtig)&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.gexperts.org/ GExperts]&lt;br /&gt;
| Geniale IDE-Erweiterung (inkl. diverser Tools) um die Produktivität bzw. Funktionalität von Delphi zu verbessern/erweitern. &lt;br /&gt;
|-&lt;br /&gt;
! [http://www.automatedqa.com/downloads/memproof.asp MemProof]&lt;br /&gt;
| Ein Tool für diverse Borland Entwicklungsumgebungen, welches nach Speicherlecks sucht.&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.winmerge.org/ WinMerge]&lt;br /&gt;
| Externes Datei-Vergleichen zum visuellen Zusammenführen von Konflikten.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Darkinsanity</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Linuxpfad&amp;diff=25068</id>
		<title>Linuxpfad</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Linuxpfad&amp;diff=25068"/>
				<updated>2011-03-05T13:00:24Z</updated>
		
		<summary type="html">&lt;p&gt;Darkinsanity: Den Namen von Linus Torvalds falsch zu schreiben grenzt ja schon an Ketzerei ;)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Einführung=&lt;br /&gt;
Zuerst sollte man den Begriff Linux näher erläutern, denn dieser wird doch häufig falsch genutzt.&lt;br /&gt;
Mit Linux ist der Kernel von Linus Torvalds gemeint und nicht eine Distribution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Was ist der Unterschied zwischen einer Distribution und dem Linux-Kernel?==&lt;br /&gt;
&lt;br /&gt;
Der Linux-Kernel ist das Herzstück, er enthält alle Treiber und Module für das Ansprechen und Verwalten der Hardware.&lt;br /&gt;
So enthält dieser z.B. Scheduler für CPU und Festplatte, Speichermanager und sogar Dateisysteme wie ext2.&lt;br /&gt;
Eine Distribution ist z.B. RedHat Server, Fedora, Ubuntu, BSD, Gentoo, myOS, SLAX ... .&lt;br /&gt;
Diese bieten auf den Kernel aufbauende und vorgefertigte (teilweise vorkompiliert, vorkonfiguriert, gepatchte) Pakete.&lt;br /&gt;
Die Distributionen unterscheiden sich in vielerlei Hinsicht, einige wollen minimalistisch sein, andere wollen Windows von Microsoft nachahmen und andere wiederum bieten Serverlösungen an.&lt;br /&gt;
Hinter Distributionen stecken oft Communities, einzelne Leute oder im Falle von RedHat Server und Fedora größere Firmen.&lt;br /&gt;
Diese Distributionen verwenden in der Regel unterschiedliche Packetmanagmentsysteme(apt, emerge,...), unterschiedliche Bibliotheken und Desktop Systeme (xfc, gnome, kde, ...).&lt;br /&gt;
&lt;br /&gt;
== Exkursion: Welche Distribution für wenn? ==&lt;br /&gt;
Für viele Distributionen ist die wichtigste Regel nur Opensource-Pakete zu enthalten um den Geist von Opensource zu wahren. Andere wie z.B. Ubuntu halten es mit dieser Regel nicht so genau und liefern Binärtreiber von z.B. Nvidia oder ATI mit. Diese sind bei den anderen Distributionen nicht dabei und müssen von Hand installiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Einsteiger ist dies oft schon zuviel erwartet und dann auch das ganze Rechtesystem mit root, usern und einiges mehr, Ubuntu hat in der Richtung vieles vereinfacht und kann somit locken. &lt;br /&gt;
Für erfahrende Linuxer ist Ubuntu mehr schlecht als recht, da diese dann einiges an Arbeit reinstecken müssen, um das System an ihre Wünsche anzupassen.&lt;br /&gt;
Diese setzen dann je nach Bedarf auf Distribution wie Fedora, Gentoo, Debian,... .&lt;br /&gt;
&lt;br /&gt;
Genug Worte über Distributionen, Kernel und Paketen, wer noch mehr wissen will, der kann [http://karmarama.developer-alliance.org/?site=artikel diesem] Link folgen und sich über die Suchmaschine des Vertrauens weiter schlau machen.&lt;br /&gt;
&lt;br /&gt;
=Einstieg in die Linuxprogrammierung=&lt;br /&gt;
An dieser Stelle wird erwartet, dass die Distribution der Wahl sowie den entsprechenden Grafikkartentreiber installiert ist. Wenn letzterer nicht installiert ist, läuft OpenGL automatisch unter Mesa.&lt;br /&gt;
Mesa ist ein Software Renderer, der eine volle OpenGL 3.0 Unterstützung auf der CPU realisiert.&lt;br /&gt;
&lt;br /&gt;
Wenn man OpenGL programmiert, dann lädt man die Funktionen aus der OpenGL32.dll (Windows) oder aus der libGL.so (Linux). Diese sind jedoch nur Wrapper, die auf die entsprechenden Funktionen in Mesa oder aus dem Hardwaretreiber (z.B. nvogl32.dll, /usr/lib/ati/libGL.so) zeigt.&lt;br /&gt;
Wenn wir unter Linux programmieren, dann werden wir immer wieder auf den Buchstaben X oder auf X11 stossen. X steht hier für den Desktop Manager, das X-Window-System. Er stellt uns Fenster, Rendercontext, Pixelformat, Maus und andere Dinge zur Verfügung.&lt;br /&gt;
In OpenGL gibt es wgl... für Windows-basierte und glX... für X11(Linux) basierte Befehle.&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Siehe [[GLX]]}}&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten X11 Befehle sind:&lt;br /&gt;
*[[glXChooseVisual]]&lt;br /&gt;
*[[glXCreateContext]]&lt;br /&gt;
*[[glXDestroyContext]]&lt;br /&gt;
*[[glXMakeCurrent]]&lt;br /&gt;
*[[glXSwapBuffers]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[XCreateSimpleWindow]]&lt;br /&gt;
*[[XDestroyWindow]]&lt;br /&gt;
*[[XMapWindow]]&lt;br /&gt;
*[[XCreateBitmapFromData]]&lt;br /&gt;
*[[XFreeCursor]]&lt;br /&gt;
*[[XCreatePixmapCursor]]&lt;br /&gt;
*[[XFreePixmap]]&lt;br /&gt;
*[[XChangeWindowAttributes]]&lt;br /&gt;
*[[XInternAtom]]&lt;br /&gt;
*[[XSetWMProtocols]]&lt;br /&gt;
*[[XStoreName]]&lt;br /&gt;
*[[XResizeWindow]]&lt;br /&gt;
*[[XFlush]]&lt;br /&gt;
*[[XMoveWindow]]&lt;br /&gt;
*[[XUndefineCursor]]&lt;br /&gt;
*[[XOpenDisplay]]&lt;br /&gt;
*[[XCloseDisplay]]&lt;br /&gt;
*[[XDefaultScreen]]&lt;br /&gt;
*[[XPending]]&lt;br /&gt;
*[[XNextEvent]]&lt;br /&gt;
*[[XGetAtomName]]&lt;br /&gt;
*[[XSync]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[XF86VidModeSwitchToMode]]&lt;br /&gt;
*[[XF86VidModeSetViewPort]]&lt;br /&gt;
*[[XF86VidModeGetAllModeLines]]&lt;br /&gt;
&lt;br /&gt;
Zum Start mit OpenGL unter X11 braucht man gerademal einen Bruchteil der aufgelisteten Funktionen.&lt;br /&gt;
Wenn man einen eigenen Cursor oder gar keinen Cursor haben will, die Auflösung verändern möchte, Fenster positionieren, auf einen der Displays verschieben oder die Überschrift und Ausmaße des Fenster ändern will, dann hat man bereits alle Funktionen.&lt;br /&gt;
Die Befehle befinden sich in den Units x, glx, xlib, xutil und xf86vmode, welche alle mit Freepascal ausgeliefert werden. Delphi selber läuft nur unter Windows, Kylix (der Linuxcompiler von Borland) wurde eingestellt und ist veraltet. Somit ist für plattformunabhängige Entwicklung darauf zu achten, dass der Code auch mit den Freepascal-Compiler (im Delphimodus) kompiliert. Für die C/C++ler gelten folgende Header: includes &amp;lt;X11/Xlib.h&amp;gt;,&amp;lt;GL/glx.h&amp;gt; und &amp;lt;X11/extensions/xf86vmode.h&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Lazarus bietet für die plattformübergreifende Verwendung von OpenGL eine Komponente &amp;quot;TOpenGLContext&amp;quot; an, die sich um die Initialisierung eines OpenGL-Kontexts kümmert.&lt;br /&gt;
&lt;br /&gt;
=Nützliche Links=&lt;br /&gt;
*[http://www.xfree86.org/current/manindex3.html Manual für C/C++]&lt;br /&gt;
*[http://www.freepascal.org/docs-html/packages/opengl/glx/index-6.html glX für FPC]&lt;br /&gt;
*[https://svn.linuxprofessionals.org/filedetails.php?repname=karmarama&amp;amp;path=%2Fprerelease%2Fwrapper%2FKar_XLib.pas Kar_XLib.pas]&lt;br /&gt;
*[https://svn.linuxprofessionals.org/filedetails.php?repname=karmarama&amp;amp;path=%2Ftrunk%2Fsrc%2Flinux%2Fkar_x11.cpp kar_x11.cpp]&lt;br /&gt;
*[https://svn.linuxprofessionals.org/filedetails.php?repname=karmarama&amp;amp;path=%2Ftrunk%2Finclude%2Flinux%2Fkar_x11.hpp kar_x11.hpp]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Trampelpfad]]&lt;/div&gt;</summary>
		<author><name>Darkinsanity</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Physik&amp;diff=25067</id>
		<title>Physik</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Physik&amp;diff=25067"/>
				<updated>2011-03-05T12:40:44Z</updated>
		
		<summary type="html">&lt;p&gt;Darkinsanity: ageia NovodeX Link gegen nVidia PhysX getauscht&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hinweis|Physik in Spielen ist sehr vielfältig. Dieser Artikel beschreibt einige Fasetten und kann keinesfalls als Vollständig gelten.}}&lt;br /&gt;
Die Physik ist mittlerweile in fast allen Spiele-Genres zum wichtigen Bestandteil geworden.&lt;br /&gt;
Da in den letzten Jahren die Grafik massiv in den Mittelpunkt geraten ist, haben wir heute schon nahe Photorealistische Spiele aber darunter haben andere Teile, wie z.B. Physik und KI gelitten.&lt;br /&gt;
Ein Spiel kann aber nur so gut sein, wie sein schlechtestes Modul.&lt;br /&gt;
Wenn die KI gegen die Wand läuft, über eine Kiste nicht rüber oder vorbei kommt, dann hilft auch die beste Grafik nichts.&lt;br /&gt;
Der Spieler wurde unschön aus der Spielwelt rausgerissen und nun hat er Zeit zu überlegen, was er nun tut(z.B. das Spiel beenden).&lt;br /&gt;
Die Physik arbeitet für die KI vor, denn die KI braucht Wissen über die Umgebung.&lt;br /&gt;
Also hat die Physik einen wichtigen Platz in der Gameengine.&lt;br /&gt;
Mittlerweile werden sogar Hardware-Physik-Beschleuniger entwickelt (siehe [http://www.ageia.com/ Ageia]), die, wie Grafikkarten, die CPU bei speziellen Berechnungen entlasten sollen.&lt;br /&gt;
Parallisierung ist ebenfalls ein wichtiger Schritt und neue Algorythmen, zur schnelleren Kollisionserkennung, sortierung und reaktion auf Kollisionen.&lt;br /&gt;
&lt;br /&gt;
== Kollisionskontrolle ==&lt;br /&gt;
&lt;br /&gt;
Ein Egoshooter, bei dem man durch Wände laufen kann, ein Echtzeitstrategiespiel, bei sich Einheiten durch Gebäude bewegen, all dies kommt der Realität nicht so wirklich nahe.&lt;br /&gt;
&lt;br /&gt;
Deshalb verfügen selbst einfachste Jump&amp;amp;Run-Spiele über eine Kollisionskontrolle. Diese verhindert, dass sich Objekte ungebremst durch andere Objekte bewegen können. &lt;br /&gt;
Überprüft wird hierbei, ob ein Objekt A (z.B. der Spieler) ein Objekt B (z.B. die Wand) berührt. Ist dies der Fall, wird die Bewegung des Objektes A  in die Richtung des Objektes B blockiert, und die Routine für das Verhalten bei Kollisionen aufgerufen.&lt;br /&gt;
&lt;br /&gt;
Da diese Berechnung bei Objekten mit vielen Polygonen sehr rechenintensiv ist, werden in der Praxis meist so genannte Bounding Volumes verwendet(z.B. [[Bounding_Box|Bounding-Boxes]]). Dabei wird für die Kollisionskontrolle nicht das Objekt mit vielen Polygonen verwendet, sondern ein Objekt aus geometrischen Formeln. So kann der Spieler in einem 3D-Shooter durch fünf einfache Quader (Rumpf &amp;amp; Kopf, Arme, Beine) simuliert werden. In den meisten Fällen ist solch eine einfache [[Bounding_Box|Bounding-Box]] bereits ausreichend.&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Kollisionsberechnung und auch Bounding Volumes werden im 3 teiligen [[Tutorial Kollision1|DGL Tutorial zum Thema &amp;quot;Kollision&amp;quot;]] behandelt.}}&lt;br /&gt;
&lt;br /&gt;
== Bounding Volumes ==&lt;br /&gt;
&lt;br /&gt;
Bounding Volumes erleichtern das ausschliessen von Objektkollisionen, da diese durch einfache Mathematische Formeln sehr schnell geprüft werden. Hierbei wird z.B. eine Bounding Sphere, um das Objekt, gespannt und durch das prüfen der Distanz und Radius zwischen 2 BoundingSpheres eine Kollision festgestellt. Man verwendet im ersten Pass(im regelfall) eine Bounding Sphere, gibt es eine Kollision dann wird eine genauere prüfung durchgeführt, z.B. Bounding Box und dann Triangle basiert. Eine gute Möglichkeit ist auch das verwenden von einem spatial partition system(z.B. Octree oder BSP). Hierbei wird ein Triangle basiertes Objekt in einen Octree zerlegt und somit sind bei sehr hoch Polygonierten Models, die entsprechenden Triangle einfach zu finden. Eine andere Möglichkeit, komplexe Models zu verarbeiten, ist das berechnen einer Hülle. Die Hülle ist wieder eine abstraktere Variante aber reicht oft als Lösung.&lt;br /&gt;
&lt;br /&gt;
== Gravitation ==&lt;br /&gt;
&lt;br /&gt;
Gerade bei neueren Spielen, in denen viele frei bewegliche Objekte vorhanden sind, ist die Simulation der Schwerkraft sehr wichtig.  Hier ein kurzes Beispiel:&lt;br /&gt;
&lt;br /&gt;
Der Spieler läuft durch einen Gang, in dem mehrere Kisten stehen. Er schießt auf eine Kiste. Durch die Wucht der Geschosse wird die Kiste in die Luft geschleudert. &lt;br /&gt;
&lt;br /&gt;
Ohne die Gravitation würde diese Kiste nun ewig im Raum rumschweben. &lt;br /&gt;
Durch die Gravitation jedoch fällt die Kiste wieder zu Boden, was der Realität auf der Erde doch näher kommt. Für den Einsatz der Gravitation, muss jedem Objekt eine Masse zugewiesen werden.&lt;br /&gt;
&lt;br /&gt;
Durch Gravitation wirkt die Reibung stärker und Objekte lassen sich schwerer bewegen, können sogar bei größerer Masse ein anderes Objekt deformieren oder kaputt machen.&lt;br /&gt;
Je Höher die Masse und Dichte eines Objektes, des so höher die Gravitation, die davon ausgeht.&lt;br /&gt;
&lt;br /&gt;
== Plastische Verformungen ==&lt;br /&gt;
&lt;br /&gt;
Plastische Verformungen sind meist das Ergebnis einer Kollision. Das wohl beste Beispiel für den Einsatz von plastischen Verformungen ist das Schadensmodell der Autos in Rennspielen, bei denen die Fahrzeuge bei Crashs Kratzer und Dellen bekommen. &lt;br /&gt;
Diese wurden in der Vergangenheit vorher modeliert und dann einfach die Models ausgetauscht aber heute werden auch hier die Methoden komplexer. So werden z.B. die Models über die unterschiedlichsten Varianten verändert. Das zerlegen der Spielewelt, wie es in RedFaction zum ersten mal groß bekannt wurde, hat man z.B. in die neueste Unreal Engine 3 Subversion übernommen.&lt;br /&gt;
Eine gängige Methoden ist z.B. das erfassen des Einflussradius(der Zerstörung), spannen eines Octrees,entfernen von Nodes und dann die neuberechnung der Hülle.&lt;br /&gt;
Diese Variante ist natürlich höchstgradig ungenau aber mit steigender Rechenpower kann man hier minimalistische Simulationen einbringen. So könnte man z.B. an die Funktion, zum entfernen von Nodes, weitere komplexe Bedingungen(absorbation von Engergie, durch die einzelnen Materialien) knüpfen.&lt;br /&gt;
Eine verwendung, der Grundlagen von Schallausbreitung, könnte hier auch einiges für Explosionen bringen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ragdoll ==&lt;br /&gt;
&lt;br /&gt;
Unter Ragdoll-Simulationen versteht man die Simulation des Zubodengehens einer Spielfigur. Diese Technik wird meist in 3D-Shootern verwendet, um darzustellen wie z.B. die Gegner von den Treffern des Spielers nach hinten geworfen werden, vom Balkon fallen und dabei an Ästen hängen bleiben wobei sich ihr Körper weiter verformt.&lt;br /&gt;
Diese physikalisch korrekt berechnete Simulation des Todes ist gerade in Deutschland sehr umstritten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fertige Physikbibliotheken ==&lt;br /&gt;
&lt;br /&gt;
Wer keine Zeit, Lust oder Geduld hat, eine eigene Physikbibliothek zu erstellen findet hier eine kleine Auswahl an fertigen:&lt;br /&gt;
# Havok (http://www.havok.com/) (Windows)&lt;br /&gt;
# Newton (http://newtondynamics.com/) (Windows, Linux, MacOS X)&lt;br /&gt;
# PhysX (http://www.nvidia.de/object/nvidia_physx_de.html) (Windows)&lt;br /&gt;
# ODE (http://www.ode.org/) (Windows, Linux, MacOS X)&lt;br /&gt;
# Bullet physics (http://www.bulletphysics.com/) (alle gängigen Plattformen und OS)&lt;/div&gt;</summary>
		<author><name>Darkinsanity</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Enginepfad&amp;diff=25066</id>
		<title>Enginepfad</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Enginepfad&amp;diff=25066"/>
				<updated>2011-03-05T12:27:16Z</updated>
		
		<summary type="html">&lt;p&gt;Darkinsanity: Ageia NovodeX ist schon seit einiger Zeit nVidia PhysX&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Der Enginepfad=&lt;br /&gt;
&lt;br /&gt;
==Einführung==&lt;br /&gt;
Willkommen auf dem '''Enginepfad''' des DelphiGL-Wikis. Dieser Pfad soll euch zeigen wie man eine Engine von Grund auf konzipieren und realisieren kann.&lt;br /&gt;
&lt;br /&gt;
Wie funktioniert der Trampelpfad? Im nachfolgenden Abschnitt findet ihr einen Text, der euch etwas über Engines erzählen soll. Dieser Text ist durchsetzt mit Schlagwörtern, welche Links auf andere Artikel im Wiki sind. Wenn ihr diesen Links folgt, erfahrt ihr mehr zu den entsprechenden Themen. &lt;br /&gt;
&lt;br /&gt;
Sinn des Trampelpfades ist es, euch die Artikel aufzuzeigen, welche ihr gelesen haben solltet und welche nützlich für den Einstieg in OpenGL sind. Am Ende dieses Trampelpfades findet ihr noch Links, die euch die Materie genauer erklären werden.&lt;br /&gt;
&lt;br /&gt;
==Der Trampelpfad==&lt;br /&gt;
Am Beginn steht bei den meisten Anfängern zum Thema [[Engine]] die Frage &amp;quot;Was brauch' ich um eine Engine zu entwickeln?&amp;quot;. Je nach dem welches Betriebsystem ihr als Plattform gewählt habt, können sich die Hilfsmittel unterscheiden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weiterhin ist die Wahl der Sprache zu treffen.&lt;br /&gt;
Wenn ihr mit Object Pascal in seinen vielen Varianten (z.B. '''Delphi''') arbeiten wollt, dann ist der [[DGLOpenGL.pas]]-Header genau das richtige für euch. Wenn es eine andere Sprache sein soll, müsst ihr euch dann nach einen aktuellen Header in Google umschauen. Es ist im vorhinein schon zu erwähnen, dass dieses Wiki Object Pascal in seiner Vielfalt verwendet.&lt;br /&gt;
&lt;br /&gt;
==Vorbereitung==&lt;br /&gt;
Als erstes muss uns klar werden, welches Ausmaß die Engine erreichen soll. Davon abhängig ist unsere Planung zu gestalten:&lt;br /&gt;
:1. Es ist ratsam mit der Plattformunterstützung anzufangen, da diese unsere unterste Schicht bilden wird.&lt;br /&gt;
:Hier ist als erstes zu sagen, je mehr Plattformen unterstütz werden sollen, desto aufwendiger wird das Projekt.&lt;br /&gt;
:Mit Plattformen sind hier z.B. PC mit 32Bit/64Bit, Konsolen (PS1-3, XBox-360, Wii, GP2X, ...) und mobile Geräte (Palm, PSP,...) gemeint.&lt;br /&gt;
:Für jede Plattform gibt es eine oder mehrere Betriebssysteme zur Ansteuerung der Hardware.&lt;br /&gt;
:Hier eine kleine Liste mit verschiedenen Betriebssystemen:&lt;br /&gt;
:*Windows&lt;br /&gt;
:*Linux&lt;br /&gt;
:*MacOS X&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:2. Abhängig davon wählen wir nun unseren Compiler. &lt;br /&gt;
:*[http://www.borland.de/delphi/ Delphi] (Windows 32Bit)&lt;br /&gt;
:*[http://www.freepascal.org/ FreePascal] (Unterstützung für alle erwähnten Plattformen und OS)&lt;br /&gt;
:*[http://www.gnu.org/software/gcc/gcc.html gcc] (Unterstützungen für alle erwähnten Plattformen und OS)&lt;br /&gt;
:*[http://www.borland.de/kylix/ Kylix] (Linux 32Bit) (Veraltet, nicht mehr in Entwicklung)&lt;br /&gt;
:*[http://msdn.microsoft.com/visualc/ VisualC++] (Windows 32/64Bit WinCE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:3. Nun sollten wir entscheiden, welche Bibliothek wir für das Ansprechen der Grafikkarte verwenden:&lt;br /&gt;
:Es gibt einige wie z.B. DirectX, GDI, AGG und Mesa aber wir wollen uns mit [[OpenGL]] auseinander setzen, denn dieses ist ein OpenGL Wiki.&lt;br /&gt;
{{Hinweis|Dieser [[OpenGL Verwendungspfad|Verweis]] führt Sie auf den Verwendungspfad in diesem Wiki und soll zeigen wie man OpenGL unter den einzelnen OS nutzten kann}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:4. Nun kommen wir zu allgemeinen Bibliotheken für das Ansteuern unserer Hardware.&lt;br /&gt;
:Im Voraus ist zu sagen, dass ALSA und OSS Treiber unter Linux sind, die das Abspielen von Sound ermöglichen. Nur nur ein Bruchteil der Bibliotheken ist für 3D Sound ausgelegt und man müsste bei Bedarf noch einen eigene Dopplereffekt hinzufügen.&lt;br /&gt;
:Sound:&lt;br /&gt;
:*ALSA (Linux)&lt;br /&gt;
:*[http://www.un4seen.com/ BASS]&lt;br /&gt;
:*[[Direct Sound]] (Windows)&lt;br /&gt;
:*[http://www.fmod.org/ FMOD]&lt;br /&gt;
:*[[OpenAL]]&lt;br /&gt;
:*OSS (Nur Linux)&lt;br /&gt;
:*[[SDL]]&lt;br /&gt;
:Netzwerk:&lt;br /&gt;
:*DirectX Net (Windows)&lt;br /&gt;
:*[[SDL_Net]]&lt;br /&gt;
:*Raknet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:5. Jetzt sollte man entscheiden, ob und welche Bibliotheken man zur Erleichterung der nicht hardwarebezogenen Aufgaben wählt. Um den Rahmen nicht zu sprengen nur ein paar Beispiele.&lt;br /&gt;
:Physik:&lt;br /&gt;
:*[http://www.havok.com/ Havok]&lt;br /&gt;
:*[http://newtondynamics.com/ Newton]&lt;br /&gt;
:*[http://www.nvidia.de/object/nvidia_physx_de.html PhysX]&lt;br /&gt;
:*[http://www.ode.org/ ODE]&lt;br /&gt;
:Fenster:&lt;br /&gt;
:*[http://www.gtk.org/ GTK]&lt;br /&gt;
:*[http://www.wxwidget.org/ wxWidget]&lt;br /&gt;
:*[[SDL]]&lt;br /&gt;
:*Win API (Windows)&lt;br /&gt;
:Kompression:&lt;br /&gt;
:*[http://www.zlib.net/ zLib]&lt;br /&gt;
:Künstliche Intelligenz:&lt;br /&gt;
:*[http://opensteer.sourceforge.net/ openSteer]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:6. Nun beachten wir unser eventuell eingeplantes Budget (normalerweise 0 ^_^) und gehen die Liste oben nochmal durch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:7. Ein Programm teilt sich in der Regel in 3 Teilbereiche (im Bereich Software Engineering auch Pakete genannt), diese sind die GUI, die Programmlogik und die Datenbank.&lt;br /&gt;
:GUI:&lt;br /&gt;
:*Die GUI sorgt dafür, dass alle Informationen dem User grafisch dargestellt werden. Dabei geht dieses natürlich auch in die Gegenrichtung. Also der User gibt Informationen an den Computer.&lt;br /&gt;
:Logik:&lt;br /&gt;
:*Die Logik ist der größte Teil vom Programm, denn hier ist der ganze Code angesiedelt, der das Programm zum laufen bringt.&lt;br /&gt;
:Datenbank:&lt;br /&gt;
:*Das Datenbank Paket, ist der Part wo alle Daten, die das Programm benötigt, zwischengespeichert werden. Das wären z.B. Variablen, Texturdaten, Spielerinformationen und so weiter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Wer sich in der Material nur ausprobieren will, kann anfangen, so viel wie möglich selber zu programmieren. Wenn es aber darum geht, eine Engine zu schreiben, welche man auch benutzten will, dann sollte man versuchen, so viel Code wie möglich wieder zu verwerten. Viele Programmierer haben schon Funktionen, Strukturen und Lösungen geschrieben und diese gilt es so gut wie möglich wieder zu verwerten. Dies hat viele Vorteile, denn man spart Zeit, man kann sich sicher sein, dass der Code standardmässig läuft und man hat sich viel Zeit mit der Konzeptphase gespart. Man muss in der konstruktiven Entwicklung nicht mehr das Rad neu erfinden. Der Trend in der professionellen Programmierung geht seit vielen Jahren in diese Richtung. [[SDL]], [[OpenAL]], DirectX, [[OpenGL]], zLib und viele andere Bibliotheken haben sich so ihren Stellenwert erkämpft.&lt;br /&gt;
&lt;br /&gt;
==Helfende Tools==&lt;br /&gt;
&lt;br /&gt;
Wenn man ein Projekt beginnt, dann sollte man auch entsprechend ausgerüstet sein, denn eine gute Toolchain erspart viel Zeit.&lt;br /&gt;
&lt;br /&gt;
===Versionierung===&lt;br /&gt;
Unabhängig von der Größe eines Projektes sollte der Quellcode und die damit verbundenen Ressourcen Versioniert werden, damit keine Daten verloren gehen. Hier mal eine Liste mit Versionierungstools.&lt;br /&gt;
*[http://subversion.tigris.org/ SVN](frei,OpenSource,cross platform, der Nachfolger von CVS)&lt;br /&gt;
*[http://git.or.cz/ git](frei,OpenSource,cross platform, der Linuxkernel wird darüber verwaltet)&lt;br /&gt;
*[http://www.nongnu.org/cvs/ CVS](frei,OpenSource,cross platform, weit verbreitet)&lt;br /&gt;
*[http://www.perforce.com/ Perforce](kommerziel ab 2 Nutzern,closed Source,cross platform, im Komerziellen Bereich verbreitet z.B. UnrealEngine3)&lt;br /&gt;
&lt;br /&gt;
===Unit Test===&lt;br /&gt;
Hierfür gibt es je nach Sprache und geschmack mehere Möglichkeiten.&lt;br /&gt;
*Frameworks([http://junit.sourceforge.net/ JUnit], [http://camelos.sourceforge.net/fpcUnit.html FPCUnit], [http://sourceforge.net/projects/cppunit CPPUnit], [http://dunit.sourceforge.net/ DUnit])&lt;br /&gt;
*komplett eigener Code&lt;br /&gt;
Ein Unittest dient dazu, einen einzelne Funktion aus dem großen ganzen zu testen und alle Unittests zusammen ergeben dann die benötigte Funktionalität der Software.&lt;br /&gt;
Schlagen einige Unittests fehl, tut die Software nicht mehr das, was sie eigentlich Leisten sollte.&lt;br /&gt;
Wenn wir z.B. eine Aufgabe haben &amp;quot;berechne Hashwert von einer Datei&amp;quot;, dann würden wir unsere Funktion, die einen Hashwert berechnet, in mehrere Unit Tests zerlegen und einen Unit Test anlegen, der die Hashfunktion auf eine Dummy File IO Klasse testet.&lt;br /&gt;
Die Dummyklasse ist in der Regel ein Interface, welcher Konstante Daten enthält und somit eine 100% funktionierende Netzwerkverbindung, Datenbank, Dateisystem oder ähnliches Simuliert. Das hat den Vorteil, dass unsere Unittest auf jedem System laufen, auch wenn garkeine Netzwerkkarte da ist. Denn wir wollen ja die Funktionalität testen und nicht die Lauffähigkeit auf irgendwelchen Systemen.&lt;br /&gt;
Mehr zum Thema ist [http://de.wikipedia.org/wiki/Modultest hier] zu finden.&lt;br /&gt;
&lt;br /&gt;
===Automatisierte Builds können sehr Hilfreich sein.===&lt;br /&gt;
Ein Automatisierter Build wird verwendet, um z.B. Nightbuilds, Dailybuilds zu erstellen, Unittest, Systemtest und so weiter zu machen.&lt;br /&gt;
Die komplexität von Buildsystemen ist hierbei sehr unterschiedlich.&lt;br /&gt;
Hier ein paar Tools.&lt;br /&gt;
*make&lt;br /&gt;
*[http://www.scons.org/ scons](python basierte toolchain, cross platform)&lt;br /&gt;
*[http://www.cmake.org/ CMake](Projektdatei Generator für viele Buildsysteme)&lt;br /&gt;
*[http://ant.apache.org/ Ant](java basierte toolchain, cross platform)&lt;br /&gt;
So kann man z.B. sein Projekt in einer makefile umsetzen, indem man sogenannte Targets für Kompilieren, Aufräumen, Unittests einbaut.&lt;br /&gt;
Wenn man dann als Programmierer den Sourcecode lädt, kann man einfach make machen und man bekommt ein fertiges Build zurück.&lt;br /&gt;
Damit hat man den ersten Stein für den Weg, zur nutzung der Software, gelegt.&lt;br /&gt;
Der neue Programmierer will sich nicht erst mit den ganzen Konfigurationen, abhängigkeiten und Flags beschäftigen und wenn man als Entwickler der Software nach 1Jahr wieder den Code generieren will und die Befehle nicht mehr weiß, hat man sogar selber die Probleme.&lt;br /&gt;
Daher lohnt es sich schon gleich zum anfang sich ein Generierungssystem auszusuchen und diese mit neuen Datein immer zu aktualisieren.&lt;br /&gt;
&lt;br /&gt;
===Komplexe Buildsystem===&lt;br /&gt;
Wer vor hat an ein größeren Projekt zu arbeiten, der sollte sich ein Buildsystem zulegen, welches über make und anderen hinaus geht.&lt;br /&gt;
Eines der weit verbreitesten Systeme ist CruiseControl.&lt;br /&gt;
CruiseControl ist ein Buildsystem, im welchen man Projekte anlegen kann, diesen bestimmte Aufgaben zuweist und es selbständig für sie Arbeit verrichtet.&lt;br /&gt;
So kann man das erstellen von Binaries, UnitTest und Systemtest durchführen, Installer erstellen, E-Mails versenden und noch vieles mehr.&lt;br /&gt;
Mehr zu CruiseControl findet man [[BuildGrids|hier]].&lt;br /&gt;
&lt;br /&gt;
===Systemtests===&lt;br /&gt;
Systemtests sind Tests, die auf eine möglichen Zielumgebung ausgeführt werden, um zu sehen ob noch Funktionen in der Software fehlen. Wenn z.B. die Netzwerkverbindung mittem beim Senden zusammenbricht und daraus ein Fehler entsteht.&lt;br /&gt;
Der Unittest testet ja nur die Funktion selber erfolgreich aber nicht System oder Fremdcode Fehler.&lt;br /&gt;
Buildtools wie Ant in Verbindung mit CruiseControl können Systemtests sehr angenehm zu testen machen und vorallem automatisiert.&lt;br /&gt;
&lt;br /&gt;
===Design Brainstorming===&lt;br /&gt;
Wenn es mal wieder Zeit ist und ein neues Feature implementiert werden soll, dann sollte man sich erstmal einem Brainstorming unterziehen und dazu sind Tools hilfreich, die einfach nur die Gedanken wiederspiegeln und nicht auf UML oder ähnliche Konzepte basieren. Denn man will in dieser Phase noch nichts konkretes sondern nur Lösungsansätze.&lt;br /&gt;
Hierfür gibt es komerzielle und freie Tools, die entsprechend unterschiedlich viel können und arbeiten.&lt;br /&gt;
*[http://freemind.sourceforge.net/wiki/index.php/Main_Page FreeMind](freies OpenSource Tool, cross platform)&lt;br /&gt;
*[http://www.gnome.org/~dscorgie/labyrinth.html Labyrinth](freies OpenSource Tool, Linux only)&lt;br /&gt;
&lt;br /&gt;
==Planung==&lt;br /&gt;
Wir gehen mal von ein &amp;quot;AllInOne Wonder&amp;quot; aus und nutzen FreePascal aufgrund der Plattformunabhängigkeit, SDL und sämtliche Zusatzpakete zur plattformunabhängigen Fensterinitialisierung sowie zum Laden von etlichen Bildformaten. Für die Soundausgabe werden wir aufgrund von Kostengründen auf OpenAL setzen. Für die Physik ist eine vorhandene Bibliothek wie zum Beispiel ODE zu favorisieren, da diese schon ausgereifter als eine selbst entwickelte ist. Doch kann im Gegenzug eine eigene Physik-Bibliothek eventuell schneller und viel schlanker sein, wenn man nur eine handvoll Dinge benötigt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Geht's nun Los?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Na ja, nun kommt der wahrscheinlich unangenehmste Satz für alle:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Entwicklung einer Engine bedarf einer ausführlichen Planung, was kurz und knapp ein [[Softwarecycle]] bedeutet. Nun sollte man die einzelnen Schritte eines Softwarecycles abarbeiten und ganz am Ende, wenn viel Zeit rum ist, kann man dann endlich anfangen den Compiler flott zu machen. Kleiner Tipp: Macht euch die Mühe, da diese sich umso mehr auszahlt, je grösser das Projekt ist(für ein Packman Clon ist es aber eher Zeitverschwendung). Das Allerwichtigste bei großen Projekten ist, dass Aufgabenpakete/Module geschnürt werden. Diese sollten nach dem [[Blackbox]]-Prinzip erstellt werden. Dadurch können die Module unabhängig voneinander von verschiedenen Personen erstellt werden. Um so etwas realisieren zu können, ist natürlich klar, dass in die Planung der [[Schnittstelle|Schnittstellen]] zwischen den Modulen sehr viel Zeit eingesetzt werden sollte. Änderungen in den Modulen sind kein Problem, Änderungen an der Schnittstelle können Einfluss auf das gesamte Projekt haben. Eine Engine kann entweder auf Low-Level oder High-Level API aufsetzen, idealerweiser sollte man eine Zwischenlösung nutzen, hierzu finden Sie unter [[Low/High-Level|High/Low-Level API]] weitere Informationen.&lt;br /&gt;
&lt;br /&gt;
In der Industrie verwendet man in größeren Engines Wrapper. Dieser ist dazu da, dass OpenGL/SDL und DirectX über eine eigene API angesteuert werden kann und somit ist es möglich die Engine mit den verschiedensten Plattformen (PC, Konsole, etc.) zurecht kommt. Laut einer neueren Umfrage schreiben 75% alle amerikanischen Publisher ihren Entwicklerteams vor, dass sie eine Engine mit genau dieser Eigenschaft nutzen. Des weiteren ist es auch immer häufiger, dass Publisher auf der ganzen Welt ihren Entwicklerteams vorschreiben, dass sie eine fertige Engine (Middleware) zu verwenden haben. Dies hat den Grund, dass der Publisher somit das Risiko eines Spiels vermindert und Geld spart - schließlich kostet das Entwickeln einer Engine eine große Summe an Geld und die Künstler sitzen währenddessen ohne Arbeit herum. Diese kalkulierten Kosten sind in der Summe höher als der Preis einer aktuellen Engine, wie zum Beispiel die &amp;quot;Vision&amp;quot; oder &amp;quot;Source&amp;quot; Engine.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie es noch nicht getan haben, dann schauen Sie sich am besten noch ein Buch oder Artikel über Pattern/Muster an. So sind [[Adapter_Muster|Adapter]], [[Singleton_Muster|Singleton]], [[Observer_Muster|Observer]] Muster sehr sinnvoll zu kennen.&lt;br /&gt;
So kann man z.B. für Materials, Texturen, Shader, Models, Animationen und alle anderen auf Daten basierte Komponenten mit dem [[Adapter Muster]] sehr flexibel sein.&lt;br /&gt;
Für ein SceneGraph kann man das Observer Muster prima anwenden und Singleton kann man für alle Manager verwenden.&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Siehe die Tutorial Reihe [[Tutorial_Softwareentwicklung1|Softwareentwicklung]]}}&lt;br /&gt;
&lt;br /&gt;
==Die ersten Schritte in eine nicht reelle Welt==&lt;br /&gt;
Nachdem man weiß, was das Projekt einmal enthalten soll, besteht der erste Schritt darin, Manager zu erstellen, die die Arbeit erleichtern. Bei 3D-Spielen ist z.B. ein Leveleditor kein Feature, was am Ende entwickelt wird, sondern der Editor ist fertig, noch bevor das Spiel getestet wird. Deshalb gibt es in Firmen Programmierer, die nichts anderes machen als Tools/Manager für die Erstellung der Inhalte zu fertigen. Dazu gehören:&lt;br /&gt;
&lt;br /&gt;
# [[Leveleditoren]] um die &amp;quot;Welt&amp;quot; zu erstellen.&lt;br /&gt;
# '''Texturmanager''' um den Programmierern den Zugriff auf die Texturen so einfach wie möglich zu machen.&lt;br /&gt;
# '''Soundmanager''' (siehe vorheriges)&lt;br /&gt;
# '''Lademanager''' für eigene Dateiformate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun ist es so weit, wir wissen was wir wollen und haben alles durchdacht.&lt;br /&gt;
Nun gilt es die einzelnen Module in die Tat um zu setzen.&lt;br /&gt;
Einige Module die es 3D Anwendungen/Spielen geben könnte:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Grundlagen:'''&lt;br /&gt;
#[[Template]]&lt;br /&gt;
#[[Kamera]]&lt;br /&gt;
#[[Schrift]]&lt;br /&gt;
#[[IODevice|Input]] (Maus/Tastatur)&lt;br /&gt;
#[[Adapter Muster]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Fortgeschrittene Grundlagen:'''&lt;br /&gt;
#[[Sound]]&lt;br /&gt;
#[[Physik]]&lt;br /&gt;
#[[Texturen]]&lt;br /&gt;
#[[Levelformat]]&lt;br /&gt;
#[[Modelformat]]&lt;br /&gt;
#[[Console]] (Laufzeit-Schnittstelle zur Engine)&lt;br /&gt;
#[[DGL GUI|GUI]] (Game User Interface)&lt;br /&gt;
#[[Netzwerk]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Fortgeschritten:'''&lt;br /&gt;
#[[Shader]]&lt;br /&gt;
#[[Materials]]&lt;br /&gt;
#[[Packformate]]&lt;br /&gt;
#[[VFS]] (Virtual File System)&lt;br /&gt;
#[[Soundformat-Erweiterungen]]&lt;br /&gt;
#[[KI]]&lt;br /&gt;
#[[Script]]&lt;br /&gt;
#[[Scene Graph]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sieht doch eigentlich nach nicht so viel aus oder?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Doch der Schein trügt. In großen Firmen sitzen meist mehrere Programmierer, die in diesen Gebiet erfahren sind, an nur ein, maximal 2 Modulen. Wie ist es dann möglich, dass es trotzdem so viele Spiele/Engines gibt, die nicht von Firmen sind ?&lt;br /&gt;
#die Planung wird bei weitem nicht so groß ausfallen wie in Grossfirmen&lt;br /&gt;
#die Koordination von vielen Person ist sehr schwer und es kann zu großen Zeitlücken kommen&lt;br /&gt;
#meistens wird die Planung sowieso nicht in die Tat umzusetzen sein, es gibt immer ein Problem&lt;br /&gt;
#ein kleines Team kann sich im besten Fall gegenseitig hochpushen und zu mehr anspornen&lt;br /&gt;
#Großfirmen haben selten die Möglichkeit, mal einen Codefetzen in Foren zu setzen und verbessern zu lassen&lt;br /&gt;
#das Nutzen von Bibliotheken ist sehr zeitsparend&lt;br /&gt;
&lt;br /&gt;
==Die Engine ist fertig oder doch nicht?==&lt;br /&gt;
Es gibt ein Unterschied zwischen der Entwicklung von einer Engine und der Entwicklung einer Engine für ein Spiel.&lt;br /&gt;
Die Engine für ein Spiel ist festgelegt und hat ein Endpunkt, was sie leisten soll.&lt;br /&gt;
Eine Engine als selbststehendes Projekt wird hingegen nie fertig, man kann sie immer wieder optimieren und erweitern.&lt;br /&gt;
Doch kommt der Punkt, wo die Qualität den Ansprüchen völlig ausreichend ist.&lt;br /&gt;
Man sollte nun noch überlegen, ob man eventuell ein Tool zur leichteren Handhabung der Engine entwickelt.&lt;br /&gt;
So kann ein GUI-Editor oder Material-Editor die Arbeit um vieles erleichtern, wenn es dann heißt die Engine auch zu nutzen. Diese Tools nennt man dann die Toolchain einer Engine und dort gehören dann neben den Editoren auch Compiler, Libs und Ressourcen hinzu.&lt;br /&gt;
&lt;br /&gt;
Nun bleibt es nur noch zu sagen: viel Glück und Erfolg mit der Entwicklung einer eigenen Engine. Mögen die bereitgestellten Links zur Erleuchtung führen.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
[http://karmarama.linuxprofessionals.org Karmarama Engine]&lt;br /&gt;
&lt;br /&gt;
[http://www.omorphia.de Projekt omorphia]&lt;br /&gt;
&lt;br /&gt;
[http://andorra.sourceforge.net/ Andorra 2D]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Trampelpfad]]&lt;/div&gt;</summary>
		<author><name>Darkinsanity</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=OpenAL&amp;diff=24999</id>
		<title>OpenAL</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=OpenAL&amp;diff=24999"/>
				<updated>2011-01-03T02:46:56Z</updated>
		
		<summary type="html">&lt;p&gt;Darkinsanity: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''OpenAL''' ('''Open A'''udio '''L'''ibrary) ist eine plattformunabhängige [[3D Audio|3D Audio-API]]. Sie ist das Audio-Pendant zu [[OpenGL]] und somit die offene Konkurrenz zu DirectSound.&lt;br /&gt;
&lt;br /&gt;
Dieses Wiki verfügt über eine deutschsprachige Übersetzung der OpenAL Spezifikation. Diese ist unter [[OpenAL-Funktionsübersicht]] zu finden.&lt;br /&gt;
&lt;br /&gt;
==Spezifikation==&lt;br /&gt;
Ähnlich [[OpenGL]], handelt es sich bei OpenAL lediglich um die Spezifikation einer Schnittstelle. Diese sieht unter anderem das Positionieren von Soundquellen im 3D-Raum vor. OpenAL ist zudem in der Lage Lautstärke und Tonhöhe jeder Soundquelle zu verändern und zudem den [[Dopplereffekt]] zu simulieren.&lt;br /&gt;
&lt;br /&gt;
Die OpenAL-Spezifikation wurde von Creative herausgegeben und ist als direkter Konkurrent zu Microsoft's Direct Sound zu sehen. Ähnlich OpenGL ist eine Schnittstelle zur Benutzung von Erweiterungen vorhanden.&lt;br /&gt;
&lt;br /&gt;
Neben hardwarebeschleunigten Implementierungen der Schnittstelle finden sich auch zahlreiche Softwarerenderer, zum Beispiel [http://kcat.strangesoft.net/openal.html OpenAL Soft]. OpenAL ist plattformunabhängig und es existieren Bindings für verschiedene Programmiersprachen.&lt;br /&gt;
&lt;br /&gt;
OpenAL wird bereits in zahlreichen Spieletiteln verwendet.&lt;br /&gt;
&lt;br /&gt;
==Vor- und Nachteile==&lt;br /&gt;
Zwar bietet OpenAL meist (unter Windows &amp;gt;= Vista) die einzige Möglichkeit hardwarebeschleunigten 3D-Sound auszugeben, jedoch ist noch bei weitem nicht für jede Soundkarte eine direkte hardwarebeschleunigte Ausgabe verfügbar. Für die meisten (OnBoard-)Soundkarten bildet OpenAL eine weitere Abstraktionsschicht über weiteren Audioschnittstellen wie WaveOut, DirectSound, ALSA, PulseAudio, OSS etc. Dies ist nicht unbedingt der Latenzzeit zuträglich, in der Praxis jedoch vernachlässigbar.&lt;br /&gt;
&lt;br /&gt;
Ein wichtiger Vorteil ist die Portabilität von OpenAL, denn im Gegensatz zu Microsofts DirectSound ist OpenAL nicht nur unter Windows, sondern auch auf zahlreichen anderen Betriebssystemen und Plattformen vertreten.&lt;br /&gt;
&lt;br /&gt;
==Alternativen==&lt;br /&gt;
* [http://msdn.microsoft.com/en-us/library/ee416960%28VS.85%29.aspx DirectSound] - von Microsoft entwickelte Schnittstelle für die Ausgabe von (3D-)Audio, nur unter Windows lauffähig&lt;br /&gt;
* [[SDL]] beinhaltet ebenfalls eine Bibliothek zur Audioausgabe&lt;br /&gt;
* [http://audorra.sourceforge.net/ Audorra] - eine Plattformübergreifende Audiobibliothek für Pascal (noch in der Entwicklung)&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
* [http://de.wikipedia.org/wiki/OpenAL Wikipedia-Artikel zu OpenAL]&lt;br /&gt;
* [http://connect.creativelabs.com/openal/default.aspx Offizielle Website zu OpenAL]&lt;br /&gt;
* [http://www.noeska.com/doal Bindings für Pascal, Windows und Linux]&lt;/div&gt;</summary>
		<author><name>Darkinsanity</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Checkliste_Allgemein&amp;diff=24923</id>
		<title>Checkliste Allgemein</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Checkliste_Allgemein&amp;diff=24923"/>
				<updated>2010-08-31T07:52:39Z</updated>
		
		<summary type="html">&lt;p&gt;Darkinsanity: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier gibt es eine allgemeine Checkliste, wenn ihr nichts oder nicht das seht, was ihr sehen wollt.&lt;br /&gt;
&lt;br /&gt;
==Grundlagen==&lt;br /&gt;
*'''Benutzen Sie eine funktionierende Programmgrundlage (Template)?'''&lt;br /&gt;
:Wurde ein [[Template]] von DelphiGL.com benutzt, oder wurde das Template bereits erfolgreich getestet dann kann von einer Funktionierenden Programmgrundlage ausgegangen werden.&lt;br /&gt;
&lt;br /&gt;
*'''Läuft das Programm ohne OpenGL-Fehler zu produzieren?'''&lt;br /&gt;
:Mittels eines Error-Handler wie er im &amp;quot;[[Tutorial_quickstart]]&amp;quot; beschrieben wird dies überprüfen.&lt;br /&gt;
&lt;br /&gt;
==Was machen wenn...?==&lt;br /&gt;
* '''&amp;quot;Ich sehe nur schwarz&amp;quot;'''&lt;br /&gt;
** Hintergrundfarbe mal auf etwas anderes als schwarz stellen um zu schauen, ob das Objekt eventuell schwarz gezeichnet wird. Wenn ja:&lt;br /&gt;
*** Ist versehentlich eine Textur gesetzt? --&amp;gt; glDisable(GL_TEXTURE_2D)&lt;br /&gt;
*** Versehentlich die falsche Farbe eingestellt? --&amp;gt; glColor4f(1.0, 1.0, 1.0, 1.0)&lt;br /&gt;
** Folgende Tests testweise deaktivieren:&lt;br /&gt;
*** Tiefentest (GL_DEPTH_TEST)&lt;br /&gt;
*** Backfaceculling (GL_CULL_FACE)&lt;br /&gt;
*** Alphatest (GL_ALPHA_TEST)&lt;br /&gt;
&lt;br /&gt;
* '''&amp;quot;Ich sehe nur die Hintergrundfarbe&amp;quot;'''&lt;br /&gt;
** Wenn diese schwarz ist, bitte oben nachschauen&lt;br /&gt;
** Ist die Projektionsmatrix richtig gesetzt ([[glOrtho]], [[gluPerspective]])?&lt;br /&gt;
** Ist der Viewport richtig gesetzt ([[glViewport]])?&lt;br /&gt;
** Ist Culling aktiviert? Werden die Vertices in der richtigen Reihenfolge übergeben? ([[Tutorial_Lektion_5]])&lt;/div&gt;</summary>
		<author><name>Darkinsanity</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=OpenAL&amp;diff=24754</id>
		<title>OpenAL</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=OpenAL&amp;diff=24754"/>
				<updated>2010-03-14T00:46:44Z</updated>
		
		<summary type="html">&lt;p&gt;Darkinsanity: /* Vor- und Nachteile */  Hardwarebeschleunigung ist nicht teuren Karten vorbehalten / Plattformunabhängigkeit / Satzbau / Grammatik&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''OpenAL''' ('''Open A'''udio '''L'''ibrary) ist eine plattformunabhängige [[3D Audio|3D Audio-API]]. Sie ist das Sound-Pendant zu [[OpenGL]] und somit die offene Konkurrenz zu DirectSound.&lt;br /&gt;
&lt;br /&gt;
Dieses Wiki verfügt über eine deutschsprachige Übersetzung der OpenAL Spezifikation. Diese ist unter [[OpenAL-Funktionsübersicht]] zu finden.&lt;br /&gt;
&lt;br /&gt;
==Spezifikation==&lt;br /&gt;
Ähnlich [[OpenGL]], handelt es sich bei OpenAL lediglich um die Spezifikation einer Schnittstelle. Diese sieht unter anderem das Positionieren von Audioquellen im 3D-Raum vor. Implementierungen sind zudem in der Lage Lautstärke und Tonhöhe jeder Audioquelle zu verändern und zudem den [[Dopplereffekt]] zu simulieren.&lt;br /&gt;
&lt;br /&gt;
Die OpenAL-Spezifikation wurde von Creative herausgegeben und ist als direkter Konkurent zu Microsoft's Direct Sound zu sehen. Ähnlich OpenGL ist eine Schnittstelle zum Einfügen von Erweiterungen vorgesehen.&lt;br /&gt;
&lt;br /&gt;
Neben Hardwarebeschleunigten implementierungen der Bibliothek finden sich auch zahlreiche Softwarerenderer, zum Beispiel [http://kcat.strangesoft.net/openal.html OpenAL-Soft]. OpenAL ist leicht auf verschiedene Plattformen zu portieren und es existieren Bindings für verschiedene Programmiersprachen.&lt;br /&gt;
&lt;br /&gt;
OpenAL wird bereits in zahlreichen Spieletiteln verwendet.&lt;br /&gt;
&lt;br /&gt;
==Vor- und Nachteile==&lt;br /&gt;
Zwar bietet OpenAL meist (unter Windows &amp;gt;= Vista) die einzige Möglichkeit hardwarebeschleunigtes 3D-Audio auszugeben, jedoch ist noch bei weitem nicht für jede Soundkarte eine direkte hardwarebeschleunigte Ausgabe verfügbar. Für die meisten (OnBoard-)Soundkarten bildet OpenAL eine weitere Abstraktionsschicht über weiteren Audioschnittstellen wie WaveOut, DirectSound, ALSA, PulseAudio, OSS etc. Dies ist nicht unbedingt der Latenzzeit zuträglich, in der Praxis jedoch vernachlässigbar.&lt;br /&gt;
&lt;br /&gt;
Ein wichtiger Vorteil ist die Portabilität von OpenAL, denn im Gegensatz zu Microsofts DirectSound ist OpenAL nicht nur unter Windows, sondern auch auf zahlreichen anderen Betriebssystemen und Plattformen vertreten.&lt;br /&gt;
&lt;br /&gt;
==Alternativen==&lt;br /&gt;
* [http://msdn.microsoft.com/en-us/library/ee416960%28VS.85%29.aspx DirectSound] - von Microsoft entwickelte Schnittstelle für die Ausgabe von (3D-)Audio, nur unter Windows lauffähig&lt;br /&gt;
* [[SDL]] beinhaltet ebenfalls eine Bibliothek zur Audioausgabe&lt;br /&gt;
* [http://audorra.sourceforge.net/ Audorra] - eine Plattformübergreifende Audiobibliothek für Pascal (noch in der Entwicklung)&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
* [http://de.wikipedia.org/wiki/OpenAL Wikipedia-Artikel zu OpenAL]&lt;br /&gt;
* [http://connect.creativelabs.com/openal/default.aspx Offizielle Website zu OpenAL]&lt;br /&gt;
* [http://www.noeska.com/doal Bindings für Pascal, Windows und Linux]&lt;/div&gt;</summary>
		<author><name>Darkinsanity</name></author>	</entry>

	</feed>