<?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=Lord+horazont</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=Lord+horazont"/>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php/Spezial:Beitr%C3%A4ge/Lord_horazont"/>
		<updated>2026-05-30T11:41:58Z</updated>
		<subtitle>Benutzerbeiträge</subtitle>
		<generator>MediaWiki 1.27.4</generator>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=DGL_Treffen/2016/Organisation&amp;diff=26342</id>
		<title>DGL Treffen/2016/Organisation</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=DGL_Treffen/2016/Organisation&amp;diff=26342"/>
				<updated>2016-05-30T18:22:42Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: /* Was gibts zu erleben? */ let’s open that can of worms&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Für den August 2016 planen wir wieder ein DGL Treffen. Diesmal geht es für 2 Wochen an die Küste von Dänemark.&lt;br /&gt;
&lt;br /&gt;
;Thema: &amp;quot;Nerds On Tour.&amp;quot; ;-)&lt;br /&gt;
&lt;br /&gt;
Weitere Infos und detaillierte Besprechungen finden in [https://delphigl.com/forum/viewtopic.php?f=4&amp;amp;p=100328#p100328 diesem Forenthread] statt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Wo?==&lt;br /&gt;
Wird noch im Thread diskutiert.&lt;br /&gt;
&lt;br /&gt;
==Wann?==&lt;br /&gt;
*Anreise: Sa. 06.08.2016&lt;br /&gt;
*Abreise: Sa. 20.08.2016&lt;br /&gt;
&lt;br /&gt;
==Was kostet das?==&lt;br /&gt;
Je besser die Auslastung des Hauses, desto besser. Die Preise werden im gewohnten Rahmen bleiben.&lt;br /&gt;
Verpflegung und Anreise sind da aber nicht mit dabei. Die Verpflegung erfolgt üblicherweise über eine Umlage und wir holen uns gemeinsam etwas. Sollte jemand aus Kostengründen nicht teilnehmen können, kann er sich per Mail an Phobeus wenden.&lt;br /&gt;
&lt;br /&gt;
==Wer kommt mit?==&lt;br /&gt;
Hier eine vorläufige Teilnehmerliste. Es sind insgesamt 8 Betten im Haus.&lt;br /&gt;
{|{{Prettytable_B1}}&lt;br /&gt;
!Teilnehmer&lt;br /&gt;
!Tage&lt;br /&gt;
(14=max)&lt;br /&gt;
!Anreise&lt;br /&gt;
!Kommentar&lt;br /&gt;
|-&lt;br /&gt;
|Phobeus&lt;br /&gt;
|14&lt;br /&gt;
|PKW &lt;br /&gt;
|(1,5 Plätze im PKW frei ab Hamburg.)&lt;br /&gt;
|-&lt;br /&gt;
|i0n0s&lt;br /&gt;
|14&lt;br /&gt;
|PKW &lt;br /&gt;
|(1 Platz im PKW frei ab Gießen.)&lt;br /&gt;
|-&lt;br /&gt;
|Polarwolf&lt;br /&gt;
|14&lt;br /&gt;
|PKW&lt;br /&gt;
|(1 Platz im PKW frei ab Hamburg.)&lt;br /&gt;
|-&lt;br /&gt;
|Seraliel&lt;br /&gt;
|2.5&lt;br /&gt;
|PKW &lt;br /&gt;
|(1 Platz frei ab Hamburg. Am Fr.12.8)&lt;br /&gt;
|-&lt;br /&gt;
|Flash&lt;br /&gt;
|14&lt;br /&gt;
|PKW&lt;br /&gt;
|3 Plätze ab Chemnitz (via Leipzig, Hannover) &lt;br /&gt;
|-&lt;br /&gt;
|TAK2004&lt;br /&gt;
|14&lt;br /&gt;
|&lt;br /&gt;
|Braucht ein Platz ab Berlin. &lt;br /&gt;
|-&lt;br /&gt;
|Mr Frase&lt;br /&gt;
|14&lt;br /&gt;
|--- &lt;br /&gt;
|---&lt;br /&gt;
|-&lt;br /&gt;
|Ms Frase&lt;br /&gt;
|14&lt;br /&gt;
|--- &lt;br /&gt;
|---&lt;br /&gt;
|End&lt;br /&gt;
|14&lt;br /&gt;
|&lt;br /&gt;
|Braucht einen Platz ab Hannover.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Wie kommt man hin?==&lt;br /&gt;
Die Anreise steht noch nicht fest. Treffpunkt wird vor Hamburg sein, dort besteht die Möglichkeit die PKWs stehen zu lassen und sich besser auf die Wagen zu verteilen. Eine Anreise zum Bahnhof HH lässt sich ebenfalls organisieren. Fahrgemeinschaften bitte so früh wie möglich bilden!&lt;br /&gt;
&lt;br /&gt;
==Was muss man persönlich mitbringen?==&lt;br /&gt;
* ggf. Reisekasse für eigene Einkäufe (Dänemark hat keinen Euro!)&lt;br /&gt;
* Bettwäsche und Handtücher&lt;br /&gt;
* Wechsel-Kleidung&lt;br /&gt;
* Reisedokumente (Führerschein, Personalausweis, Versicherungs- und Geldkarten)&lt;br /&gt;
* Reiseapotheke&lt;br /&gt;
* Hygieneartikel &lt;br /&gt;
* Badesachen (inkl. Sonnencreme)&lt;br /&gt;
* Sonstiges (was zu lesen, Schreibzeug etc.)&lt;br /&gt;
&lt;br /&gt;
==Was müssen wir gemeinsammitbringen?==&lt;br /&gt;
* Klopapier&lt;br /&gt;
* Netzwerkkabel&lt;br /&gt;
* Steckdosenleisten&lt;br /&gt;
* Küchenequipement (Gewürze, Dosenöffner/Korkenzieher/Flaschenöffner, Kaffeefilter, Geschirrtücher, Wischtücher, Küchenrolle, Spülmittel)&lt;br /&gt;
* Elektronik (1 Router, Laptop, Netzwerkkabel, Fotoapparat)&lt;br /&gt;
&lt;br /&gt;
==Was gibts zu erleben?==&lt;br /&gt;
*DGLer in echt ;)&lt;br /&gt;
*Spiel und Spannung&lt;br /&gt;
*Eine große weiße Leinwand zum bewundern&lt;br /&gt;
*Ausgebildete Barkeeper&lt;br /&gt;
*Baden und Grillen&lt;br /&gt;
*Mini-LAN&lt;br /&gt;
*Virtuelle Realitäten&lt;br /&gt;
*Live Projektvorstellung&lt;br /&gt;
*DänInnen, vereinzelt SchwedInnen *hust* ;)&lt;br /&gt;
&lt;br /&gt;
==Was gibts zu essen?==&lt;br /&gt;
Flow: Ich sollte fast alles zubereitet bekommen, was aus dem Wasser kommt. Der Kauf ist üblicherweise direkt vom Kutter, die aber unregelmäßig rein kommen. Ein entsprechendes Backup sollte existieren.&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}}&lt;br /&gt;
!Koch&lt;br /&gt;
!Speise&lt;br /&gt;
!Benötigte Zutaten&lt;br /&gt;
|-&lt;br /&gt;
|Thomas&lt;br /&gt;
|Pitataschen&lt;br /&gt;
|Tomaten, Paprika, Mais, Schafskäsen, Gurken, Tunfisch, Hänchenbrust, Pitataschen, Salami, Schinken, Gouda, Pfanne+Herd/Ofen/Toaster&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Shadersammlung&amp;diff=26305</id>
		<title>Shadersammlung</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Shadersammlung&amp;diff=26305"/>
				<updated>2015-04-11T14:27:42Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: /* Geometrie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Was sind Shader?==&lt;br /&gt;
Die traditionelle [[Feste_Funktionspipeline|Funktionspipeline]] der OpenGL ist sehr beschränkt, neuere [[Algorithmus|Algorithmen]] erfordern eine viel höhere Flexibilität. [[Shader]] sind kleine Programme die es erlauben Teile der Funktionspipeline völlig frei zu programmieren. Dies bietet völlig neue Möglichkeiten. Auf der einen Seite sind Shader für Einsteiger eine gewisse Hürde, auf der anderen Seite können sie viele Dinge aber auch enorm vereinfachen. Aus diesem Grund wurde in OpenGL 3.1 sowie OpenGL ES 2.0 die feste Funktionspipeline entfernt, so dass Shader dort verpflichtend sind.&lt;br /&gt;
&lt;br /&gt;
Der Artikel [[Shader]] gibt einen ausführlichen Überblick zum Thema sowie eine [[Shader#Wie_geht_es_nun_weiter.3F|Linksammlung]] für den Einstieg.&lt;br /&gt;
&lt;br /&gt;
==Shader hinzufügen==&lt;br /&gt;
Die Shadersammlung braucht deine Hilfe um zu wachsen. Wenn du einen Shader bereitstellen könntest wäre dies ein toller Dienst für die Community.&lt;br /&gt;
&lt;br /&gt;
Wer einen Shader zur Shadersammlung hinzufügen möchte, findet am Ende dieses Seite eine [[#Vorlage|Vorlage]].&lt;br /&gt;
&lt;br /&gt;
==Schwierigkeitsgrad==&lt;br /&gt;
Es ist nicht leicht einen Schwierigkeitsgrad für Shader anzugeben, trotzdem haben wir dies einmal versucht. Der Schwierigkeitsgrad kann zumindest für Einsteiger einen groben Hinweis geben was man sich vielleicht mal anschauen könnte.&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;margin-left:50px;&amp;quot;&lt;br /&gt;
| {{TableHead}} | {{ShaderLevel|1}}&lt;br /&gt;
| Der Shader ist für Einsteiger geeignet. Um den Shader herum wird keine zusätzliche Infrastruktur benötigt.&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}} | {{ShaderLevel|2}}&lt;br /&gt;
| Der Shader ist für Einsteiger geeignet, benötigt aber etwas zusätzliche Infrastruktur. Etwa benötigt ein Post-Processing-Shader ein [[FBO|FrameBufferObject]], für [[Bumpmapping]] wird eine [[Normalmap]] benötigt.&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}} | {{ShaderLevel|3}}&lt;br /&gt;
| Mittlerer Schwierigkeitsgrad. Der Shader ist etwas komplizierter und/oder benötigt viel zusätzliche Infrastruktur.&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}} | {{ShaderLevel|4}}&lt;br /&gt;
| Hoher Schwierigkeitsgrad. Der Shader ist kompliziert und/oder verwendet intensiv Extensions.&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}} | {{ShaderLevel|5}}&lt;br /&gt;
| Extremer Schwierigkeitsgrad...alles was es sonst noch gibt.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==GLSL-Shader==&lt;br /&gt;
Die hier gelisteten Shader sind in Kategorien aufgeteilt. Weitere Kategorien dürfen bei Bedarf einfach ergänzt werden.&lt;br /&gt;
&lt;br /&gt;
===Beleuchtung und Texturen===&lt;br /&gt;
Diese Kategorie umfasst alles vom einfachen Fixed-Function-Pipeline-Ersatz über PerPixel-Licht und Bumpmapping bis zu ShadowMaps. Der Shader-Einsteiger wird in dieser Kategorie sicherlich fündig.&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
| {{TableHead}}  | [[shader_verysimple|Verysimple]] von [[Benutzer:damadmax|damadmax]] {{ShaderLevel|1}}&lt;br /&gt;
| {{Table150R2}} style=&amp;quot;text-align:center;&amp;quot; | (kein Bild vorhanden)&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Ein einfacher Shader, welcher eine Textur an Vertices bindet. Dieser Shader baut damit das Standardverhalten der festen Pipeline nach. {{ShaderLink|shader_verysimple}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_PerPixelLighting|Per Pixel-Beleuchtung]] von [[Benutzer:Ireyon|Ireyon]] {{ShaderLevel|1}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:shader_ppl.png|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Shader, der Per Pixel beleuchtet. {{ShaderLink|shader_PerPixelLighting}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_PerPixel_Lighting2|Per Pixel-Beleuchtung2]] von [[Benutzer:Olee|Olee]] {{ShaderLevel|1}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:PPLShader.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Beleuchtet Flächen nach Pixeln anstatt wie OpenGl-Licht je Vertex. Erlaubt unendlich weit entferntes Licht und beachtet [[glFog]]. {{ShaderLink|shader_PerPixel_Lighting2}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_Bumpmapping|BumpmappingShader]] von [[Benutzer:Bergmann89|Bergmann89]] {{ShaderLevel|2}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Bumpmapping.JPG|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | BumpmappingShader auf der Basis des [[shader_PerPixelLighting|Per Pixel-Beleuchtung]]-Shaders {{ShaderLink|shader_Bumpmapping}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_ConeVolumeShadow|Kegelvolumen-Schatten ]] von [[Benutzer:Coolcat|Coolcat]] {{ShaderLevel|3}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:shader_ConeVolumeShadow2.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Spezialshader für realistische Schatten einer Kugellichtquelle. Kugellichtquellen erzeugen im Gegensatz zu den üblichen Punktlichtquellen weiche Schatten. Dieser Ansatz ist im Vergleich extrem schnell, da er nur eine Erweiterung des gewöhnlichen Per-Pixel-Lighting darstellt. Allerdings funktioniert dieser Shader nur dann, wenn es sich bei sämtlichen Schatten werfenden Objekten in der Szene um Kugeln handelt. {{ShaderLink|shader_ConeVolumeShadow}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Post-Processing===&lt;br /&gt;
Post-Processing-Shader zeichnen sich dadurch aus, dass sie auf die gesamte Szene angewendet werden &amp;lt;u&amp;gt;nachdem&amp;lt;/u&amp;gt; diese bereits gerendert wurde. Üblicherweise wird die Szene zuerst mit einem [[FBO|FramebufferObject]] (FBO) in eine Textur gerendert. Anschließend wird diese Textur auf ein bildschirmfüllendes Quad gespannt und mit dem Post-Processing-Shader gerendert.&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
| {{TableHead}}  | [[shader_sepia|Sepia-Shader]] von [[Benutzer:Markus|Markus]] {{ShaderLevel|2}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:shader_sepia_nachher.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Post-Processing-Shader, welcher einen Sepia-Farbfilter auf die Szene anwendet. {{ShaderLink|shader_sepia}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_radial_blur|Radial Blur]] von [[Benutzer:Markus|Markus]] {{ShaderLevel|2}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:shader_radial_blur_nachher.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Post-Processing-Shader, welcher die Szene ausgehend von einem beliebigen Punkt verwischt. {{ShaderLink|shader_radial_blur}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_blur2|Blur-Shader]] von [[Benutzer:Skeptiker|Skeptiker]] und [[Benutzer:Coolcat|Coolcat]] {{ShaderLevel|3}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Shader_blur_seerose_blured_small.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Post-Processing-Shader, welcher die Szene insgesamt verwischt. Dieser Shader kann beispielsweise genutzt werden um einen Glow-Effekt zu erreichen. {{ShaderLink|shader_blur2}}&lt;br /&gt;
{{excIcon}} Excellenter Artikel&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_Stereoscopy|Stereoskopie]] von [[Benutzer:Joni|Joni]] {{ShaderLevel|2}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:shader_stereo_preview.png|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Sammlung von Post-Processing-Shadern, welche ein linkes und ein rechtes Bild als Stereogramm mit verschiedenen Methoden (verschiedene Anaglyphen, Zeilenverschachtelung, ...) anzeigen. {{ShaderLink|shader_Stereoscopy}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Geometrie===&lt;br /&gt;
Hier finden sich Shader die die Geometrie entweder komplett neu erzeugen oder stark verändern. Es muss nicht unbedingt Geometryshader oder Instancing sein, auch mit dem Vertexshader kann man schon viel anstellen. Ein klassisches Beispiel ist die Mesh-Animation.&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
| {{TableHead}}  | [[shader_Terrain_GPU4|Heightmap-Terrain]] von [[Benutzer:Coolcat|Coolcat]] {{ShaderLevel|3}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Terrain.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Shader für ein Heightmap-Terrain der ShaderModel 4.0 Features nutzt. Das Terrain wird zur Laufzeit fast vollständig aus der Heightmap generiert, was ordentlich Speicherplatz spart. Im Fragmentshader werden drei Texturlayer mit Hilfe einer Alphamap interpoliert {{ShaderLink|shader_Terrain_GPU4}}&lt;br /&gt;
&lt;br /&gt;
'''Extensions:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_EXT_gpu_shader4]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_Instancing|Instancing-Shader]] von [[Benutzer:Coolcat|Coolcat]] {{ShaderLevel|4}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:shader_Instancing.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Dieser Shader zeigt die Benutzung von [[GL_ARB_draw_instanced]]. Ein häufiger Anwendungsfall ist das rendern vieler gleichartiger Objekte. Die Extension beschleunigt derartige Anwendungen, in dem die Anzahl der API-Aufrufe und die Menge redundanter Daten reduziert wird. {{ShaderLink|shader_Instancing}}&lt;br /&gt;
&lt;br /&gt;
'''Extensions:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_ARB_draw_instanced]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_EXT_gpu_shader4]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_EXT_texture_buffer_object]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_ARB_texture_float]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_tesselation|Tesselation-Shader]] von [[Benutzer:dj3hut1|dj3hut1]] {{ShaderLevel|4}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Tesselation_s.png|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Dieser Shader nutzt einen Geometry Shader um ein Dreieck zu tesselieren. {{ShaderLink|shader_tesselation}}&lt;br /&gt;
&lt;br /&gt;
'''Extensions:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_ARB_geometry_shader4]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_normal_debug_330|Normal Debugging-Shader für OpenGL 3.30+ Core]] von [[Benutzer:Lord Horazont|Lord Horazont]] {{ShaderLevel|4}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:normal_debug_shader_330.png|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Dieser Shader nutzt einen Geometry Shader aus OpenGL 3.30 um die Normalen eines Modells ohne viel Aufwand anzuzeigen. {{ShaderLink|shader_normal_debug_330}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_normal_debug|Normal Debugging-Shader]] von [[Benutzer:dj3hut1|dj3hut1]] {{ShaderLevel|4}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Normal_debug_s.png|113px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Nützlicher Shader um ohne viel Aufwand die Normalen eines Modells anzuzeigen. {{ShaderLink|shader_normal_debug}}&lt;br /&gt;
&lt;br /&gt;
'''Extensions:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_ARB_geometry_shader4]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Partikel===&lt;br /&gt;
Natürlich kann man auch bei einem [[Partikelsystem]] Shader einsetzen. Mit etwas Geschick kann man die gesamte Berechnung sogar vollständig auf die Grafikkarte verlagern um die CPU zu entlasten.&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
| {{TableHead}}  | [[GLSL_Partikel_2|GPU Partikelsystem]] von [[Benutzer:Coolcat|Coolcat]] {{ShaderLevel|5}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Partikel-Gravitation.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Ein GPU-Partikelsystem welches insbesondere auf SM4 Features wie Geometryshader und Transform-Feedback setzt. So ist auch eine Partikel-Partikel-Interaktion mit über 200.000 Partikeln ist kein Problem. {{ShaderLink|GLSL_Partikel_2}}&lt;br /&gt;
&lt;br /&gt;
'''Extensions:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_EXT_geometry_shader4]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_NV_transform_feedback]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_EXT_gpu_shader4]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_EXT_texture_buffer_object]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_ARB_texture_float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_EXT_texture_integer]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[GLSL_Partikel|GPU Partikelsystem für alte Hardware]] von [[Benutzer:Oc2k1|Oc2k1]] {{ShaderLevel|5}}&lt;br /&gt;
| {{Table150R2}} style=&amp;quot;text-align:center;&amp;quot; | (kein Bild vorhanden)&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Ebenfalls ein GPU-Partikelsystem, welches aber auf FramebufferObjects und Fragmentshader setzt. Damit sollte es auch auf älterer Hardware funktionieren. {{ShaderLink|GLSL_Partikel}}&lt;br /&gt;
&lt;br /&gt;
'''Extensions:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_ARB_texture_float]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sonstiges===&lt;br /&gt;
Hier kommt alles rein was sonst nirgendwo rein passt und eine neue Kategorie nicht lohnenswert ist.&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
| {{TableHead}}  | [[shader_game_of_life|Game of Life]] von [[Benutzer:dj3hut1|dj3hut1]] {{ShaderLevel|3}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Game_of_life_s.png|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Simuliert das altbekannte 'Game of Life' im Shader. {{ShaderLink|shader_game_of_life}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_Zufallsgenerator|Pseudozufallsgenerator]] von [[Benutzer:Coolcat|Coolcat]] {{ShaderLevel|4}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:shader_Zufallsgenerator.png|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Generierung von Pseudozufallszahlen im Shader mit [[GL_EXT_gpu_shader4]]. Außerdem eine Beispielanwendung: Ein reproduzierbares pesudozufälliges Verwirbelfeld für ein GPU-Partikelsystem. {{ShaderLink|shader_Zufallsgenerator}}&lt;br /&gt;
&lt;br /&gt;
'''Extensions:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_EXT_gpu_shader4]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}} | [[shader_Mandelbrot|Mandelbrotfraktal Shader]] von [[Benutzer:Komoluna|Komoluna]]&lt;br /&gt;
| {{Table150R2}} | [[Bild:Mandelbrotshader blackwhite.png|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}} | Ein Shader zum generieren eines Mandelbrotfraktals. {{ShaderLink|shader_Mandelbrot}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Non-GLSL-Shader==&lt;br /&gt;
In diesem Abschnitt findet ihr Shader die mit einer anderen Technik als GLSL geschrieben wurden.&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
| {{TableHead}}  | [[shader_texturing(ARB)|Texturing (ARB)]] von [[Benutzer:dj3hut1|dj3hut1]] {{ShaderLevel|1}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Texarb_textured_s.png|166px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Demonstriert eine einfache Texturierung. {{ShaderLink|shader_texturing(ARB)}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_phong_per_pixel(ARB)|Phong per Pixel (ARB)]] von [[Benutzer:dj3hut1|dj3hut1]] {{ShaderLevel|1}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Phong_arb_s.png|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Per-Pixel-Beleuchtung. {{ShaderLink|shader_phong_per_pixel(ARB)}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_diffuse_bumpmapping(Cg)|Diffuse Bumpmapping (NVIDIA-Cg)]] von [[Benutzer:igel457|igel457]] {{ShaderLevel|2}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:shader_diffuse_bumpmapping_cg.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Wendet diffuses Bumpmapping auf eine beliebige Oberfläche an. {{ShaderLink|shader_diffuse_bumpmapping(Cg)}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_surface_scattering(ARB)|Surface Scattering (ARB)]] von [[Benutzer:dj3hut1|dj3hut1]] {{ShaderLevel|3}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Scattering_s.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Der Shader bestimmt die Distanz, die Licht durch ein Material zurücklegt. Auf diese Weise wird die Lichtdurchlässigkeit bestimmt. {{ShaderLink|shader_surface_scattering(ARB)}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Vorlage==&lt;br /&gt;
Die Shadersammlung braucht deine Hilfe um zu wachsen. Wenn du einen Shader bereitstellen könntest wäre dies ein toller Dienst für die Community.&lt;br /&gt;
&lt;br /&gt;
Folgende Schritte müssen gemacht werden um einen Shader einzutragen:&lt;br /&gt;
# Erstelle mit Hilfe der [[Shaderartikelvorlage]] einen neuen Artikel. Dazu den wiki-Code der Vorlage einfach kopieren und in den neuen Artikel einfügen. Der Artikelname sollte mit dem Präfix &amp;lt;tt&amp;gt;shader_&amp;lt;/tt&amp;gt; beginnen, z.B. &amp;lt;tt&amp;gt;shader_Wasser2d&amp;lt;/tt&amp;gt; für einen 2D Wassershader.&lt;br /&gt;
# Da Shader zu 90% optische Effekte bewirken, sollte (mindestens) ein aussagekräftiges Beispielbild im Shaderartikel hinterlegt werden. Eines der Bilder sollte dann auch hier in der Liste verlinkt werden.&lt;br /&gt;
# Füge deinen Shader in die Shadersammlung ein. Verwende dazu dieses Template:&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt; |-&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt; | &amp;lt;nowiki&amp;gt;{{TableHead}}  | [[shader_Wasser2d|2D Wassershader]] von [[Benutzer:DeinName|DeinName]]&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt; | &amp;lt;nowiki&amp;gt;{{Table150R2}} | [[Bild:Wassershader2D.jpg|150px|150px]]&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt; |-&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt; | &amp;lt;nowiki&amp;gt;{{TableCell}}&amp;lt;/nowiki&amp;gt;  | Einige Sätze zur Beschreibung des Shaders. &amp;lt;nowiki&amp;gt;{{ShaderLink|shader_Wasser2d}}&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt; &amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;'''Extensions:'''&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt;Liste von notwendigen Extensions.&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt; |-&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Keine Angst, es muss nicht alles auf Anhieb perfekt sein.&lt;br /&gt;
&lt;br /&gt;
Falls du Fragen oder Probleme mit der Vorlage hast, im [[DGL-Chat]] oder [http://www.delphigl.com/forum/ Forum] hilft man immer gerne.&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Shadersammlung&amp;diff=26304</id>
		<title>Shadersammlung</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Shadersammlung&amp;diff=26304"/>
				<updated>2015-04-11T14:27:06Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: /* Geometrie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Was sind Shader?==&lt;br /&gt;
Die traditionelle [[Feste_Funktionspipeline|Funktionspipeline]] der OpenGL ist sehr beschränkt, neuere [[Algorithmus|Algorithmen]] erfordern eine viel höhere Flexibilität. [[Shader]] sind kleine Programme die es erlauben Teile der Funktionspipeline völlig frei zu programmieren. Dies bietet völlig neue Möglichkeiten. Auf der einen Seite sind Shader für Einsteiger eine gewisse Hürde, auf der anderen Seite können sie viele Dinge aber auch enorm vereinfachen. Aus diesem Grund wurde in OpenGL 3.1 sowie OpenGL ES 2.0 die feste Funktionspipeline entfernt, so dass Shader dort verpflichtend sind.&lt;br /&gt;
&lt;br /&gt;
Der Artikel [[Shader]] gibt einen ausführlichen Überblick zum Thema sowie eine [[Shader#Wie_geht_es_nun_weiter.3F|Linksammlung]] für den Einstieg.&lt;br /&gt;
&lt;br /&gt;
==Shader hinzufügen==&lt;br /&gt;
Die Shadersammlung braucht deine Hilfe um zu wachsen. Wenn du einen Shader bereitstellen könntest wäre dies ein toller Dienst für die Community.&lt;br /&gt;
&lt;br /&gt;
Wer einen Shader zur Shadersammlung hinzufügen möchte, findet am Ende dieses Seite eine [[#Vorlage|Vorlage]].&lt;br /&gt;
&lt;br /&gt;
==Schwierigkeitsgrad==&lt;br /&gt;
Es ist nicht leicht einen Schwierigkeitsgrad für Shader anzugeben, trotzdem haben wir dies einmal versucht. Der Schwierigkeitsgrad kann zumindest für Einsteiger einen groben Hinweis geben was man sich vielleicht mal anschauen könnte.&lt;br /&gt;
{|{{Prettytable_B1}} style=&amp;quot;margin-left:50px;&amp;quot;&lt;br /&gt;
| {{TableHead}} | {{ShaderLevel|1}}&lt;br /&gt;
| Der Shader ist für Einsteiger geeignet. Um den Shader herum wird keine zusätzliche Infrastruktur benötigt.&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}} | {{ShaderLevel|2}}&lt;br /&gt;
| Der Shader ist für Einsteiger geeignet, benötigt aber etwas zusätzliche Infrastruktur. Etwa benötigt ein Post-Processing-Shader ein [[FBO|FrameBufferObject]], für [[Bumpmapping]] wird eine [[Normalmap]] benötigt.&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}} | {{ShaderLevel|3}}&lt;br /&gt;
| Mittlerer Schwierigkeitsgrad. Der Shader ist etwas komplizierter und/oder benötigt viel zusätzliche Infrastruktur.&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}} | {{ShaderLevel|4}}&lt;br /&gt;
| Hoher Schwierigkeitsgrad. Der Shader ist kompliziert und/oder verwendet intensiv Extensions.&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}} | {{ShaderLevel|5}}&lt;br /&gt;
| Extremer Schwierigkeitsgrad...alles was es sonst noch gibt.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==GLSL-Shader==&lt;br /&gt;
Die hier gelisteten Shader sind in Kategorien aufgeteilt. Weitere Kategorien dürfen bei Bedarf einfach ergänzt werden.&lt;br /&gt;
&lt;br /&gt;
===Beleuchtung und Texturen===&lt;br /&gt;
Diese Kategorie umfasst alles vom einfachen Fixed-Function-Pipeline-Ersatz über PerPixel-Licht und Bumpmapping bis zu ShadowMaps. Der Shader-Einsteiger wird in dieser Kategorie sicherlich fündig.&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
| {{TableHead}}  | [[shader_verysimple|Verysimple]] von [[Benutzer:damadmax|damadmax]] {{ShaderLevel|1}}&lt;br /&gt;
| {{Table150R2}} style=&amp;quot;text-align:center;&amp;quot; | (kein Bild vorhanden)&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Ein einfacher Shader, welcher eine Textur an Vertices bindet. Dieser Shader baut damit das Standardverhalten der festen Pipeline nach. {{ShaderLink|shader_verysimple}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_PerPixelLighting|Per Pixel-Beleuchtung]] von [[Benutzer:Ireyon|Ireyon]] {{ShaderLevel|1}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:shader_ppl.png|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Shader, der Per Pixel beleuchtet. {{ShaderLink|shader_PerPixelLighting}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_PerPixel_Lighting2|Per Pixel-Beleuchtung2]] von [[Benutzer:Olee|Olee]] {{ShaderLevel|1}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:PPLShader.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Beleuchtet Flächen nach Pixeln anstatt wie OpenGl-Licht je Vertex. Erlaubt unendlich weit entferntes Licht und beachtet [[glFog]]. {{ShaderLink|shader_PerPixel_Lighting2}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_Bumpmapping|BumpmappingShader]] von [[Benutzer:Bergmann89|Bergmann89]] {{ShaderLevel|2}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Bumpmapping.JPG|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | BumpmappingShader auf der Basis des [[shader_PerPixelLighting|Per Pixel-Beleuchtung]]-Shaders {{ShaderLink|shader_Bumpmapping}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_ConeVolumeShadow|Kegelvolumen-Schatten ]] von [[Benutzer:Coolcat|Coolcat]] {{ShaderLevel|3}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:shader_ConeVolumeShadow2.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Spezialshader für realistische Schatten einer Kugellichtquelle. Kugellichtquellen erzeugen im Gegensatz zu den üblichen Punktlichtquellen weiche Schatten. Dieser Ansatz ist im Vergleich extrem schnell, da er nur eine Erweiterung des gewöhnlichen Per-Pixel-Lighting darstellt. Allerdings funktioniert dieser Shader nur dann, wenn es sich bei sämtlichen Schatten werfenden Objekten in der Szene um Kugeln handelt. {{ShaderLink|shader_ConeVolumeShadow}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Post-Processing===&lt;br /&gt;
Post-Processing-Shader zeichnen sich dadurch aus, dass sie auf die gesamte Szene angewendet werden &amp;lt;u&amp;gt;nachdem&amp;lt;/u&amp;gt; diese bereits gerendert wurde. Üblicherweise wird die Szene zuerst mit einem [[FBO|FramebufferObject]] (FBO) in eine Textur gerendert. Anschließend wird diese Textur auf ein bildschirmfüllendes Quad gespannt und mit dem Post-Processing-Shader gerendert.&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
| {{TableHead}}  | [[shader_sepia|Sepia-Shader]] von [[Benutzer:Markus|Markus]] {{ShaderLevel|2}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:shader_sepia_nachher.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Post-Processing-Shader, welcher einen Sepia-Farbfilter auf die Szene anwendet. {{ShaderLink|shader_sepia}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_radial_blur|Radial Blur]] von [[Benutzer:Markus|Markus]] {{ShaderLevel|2}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:shader_radial_blur_nachher.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Post-Processing-Shader, welcher die Szene ausgehend von einem beliebigen Punkt verwischt. {{ShaderLink|shader_radial_blur}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_blur2|Blur-Shader]] von [[Benutzer:Skeptiker|Skeptiker]] und [[Benutzer:Coolcat|Coolcat]] {{ShaderLevel|3}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Shader_blur_seerose_blured_small.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Post-Processing-Shader, welcher die Szene insgesamt verwischt. Dieser Shader kann beispielsweise genutzt werden um einen Glow-Effekt zu erreichen. {{ShaderLink|shader_blur2}}&lt;br /&gt;
{{excIcon}} Excellenter Artikel&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_Stereoscopy|Stereoskopie]] von [[Benutzer:Joni|Joni]] {{ShaderLevel|2}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:shader_stereo_preview.png|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Sammlung von Post-Processing-Shadern, welche ein linkes und ein rechtes Bild als Stereogramm mit verschiedenen Methoden (verschiedene Anaglyphen, Zeilenverschachtelung, ...) anzeigen. {{ShaderLink|shader_Stereoscopy}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Geometrie===&lt;br /&gt;
Hier finden sich Shader die die Geometrie entweder komplett neu erzeugen oder stark verändern. Es muss nicht unbedingt Geometryshader oder Instancing sein, auch mit dem Vertexshader kann man schon viel anstellen. Ein klassisches Beispiel ist die Mesh-Animation.&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
| {{TableHead}}  | [[shader_Terrain_GPU4|Heightmap-Terrain]] von [[Benutzer:Coolcat|Coolcat]] {{ShaderLevel|3}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Terrain.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Shader für ein Heightmap-Terrain der ShaderModel 4.0 Features nutzt. Das Terrain wird zur Laufzeit fast vollständig aus der Heightmap generiert, was ordentlich Speicherplatz spart. Im Fragmentshader werden drei Texturlayer mit Hilfe einer Alphamap interpoliert {{ShaderLink|shader_Terrain_GPU4}}&lt;br /&gt;
&lt;br /&gt;
'''Extensions:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_EXT_gpu_shader4]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_Instancing|Instancing-Shader]] von [[Benutzer:Coolcat|Coolcat]] {{ShaderLevel|4}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:shader_Instancing.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Dieser Shader zeigt die Benutzung von [[GL_ARB_draw_instanced]]. Ein häufiger Anwendungsfall ist das rendern vieler gleichartiger Objekte. Die Extension beschleunigt derartige Anwendungen, in dem die Anzahl der API-Aufrufe und die Menge redundanter Daten reduziert wird. {{ShaderLink|shader_Instancing}}&lt;br /&gt;
&lt;br /&gt;
'''Extensions:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_ARB_draw_instanced]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_EXT_gpu_shader4]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_EXT_texture_buffer_object]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_ARB_texture_float]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_tesselation|Tesselation-Shader]] von [[Benutzer:dj3hut1|dj3hut1]] {{ShaderLevel|4}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Tesselation_s.png|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Dieser Shader nutzt einen Geometry Shader um ein Dreieck zu tesselieren. {{ShaderLink|shader_tesselation}}&lt;br /&gt;
&lt;br /&gt;
'''Extensions:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_ARB_geometry_shader4]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_normal_debug_330|Normal Debugging-Shader für OpenGL 3.30+ Core]] von [[Benutzer::Lord Horazont|Lord Horazont]] {{ShaderLevel|4}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:normal_debug_shader_330.png|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Dieser Shader nutzt einen Geometry Shader aus OpenGL 3.30 um die Normalen eines Modells ohne viel Aufwand anzuzeigen. {{ShaderLink|shader_normal_debug_330}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_normal_debug|Normal Debugging-Shader]] von [[Benutzer:dj3hut1|dj3hut1]] {{ShaderLevel|4}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Normal_debug_s.png|113px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Nützlicher Shader um ohne viel Aufwand die Normalen eines Modells anzuzeigen. {{ShaderLink|shader_normal_debug}}&lt;br /&gt;
&lt;br /&gt;
'''Extensions:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_ARB_geometry_shader4]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Partikel===&lt;br /&gt;
Natürlich kann man auch bei einem [[Partikelsystem]] Shader einsetzen. Mit etwas Geschick kann man die gesamte Berechnung sogar vollständig auf die Grafikkarte verlagern um die CPU zu entlasten.&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
| {{TableHead}}  | [[GLSL_Partikel_2|GPU Partikelsystem]] von [[Benutzer:Coolcat|Coolcat]] {{ShaderLevel|5}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Partikel-Gravitation.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Ein GPU-Partikelsystem welches insbesondere auf SM4 Features wie Geometryshader und Transform-Feedback setzt. So ist auch eine Partikel-Partikel-Interaktion mit über 200.000 Partikeln ist kein Problem. {{ShaderLink|GLSL_Partikel_2}}&lt;br /&gt;
&lt;br /&gt;
'''Extensions:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_EXT_geometry_shader4]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_NV_transform_feedback]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_EXT_gpu_shader4]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_EXT_texture_buffer_object]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_ARB_texture_float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_EXT_texture_integer]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[GLSL_Partikel|GPU Partikelsystem für alte Hardware]] von [[Benutzer:Oc2k1|Oc2k1]] {{ShaderLevel|5}}&lt;br /&gt;
| {{Table150R2}} style=&amp;quot;text-align:center;&amp;quot; | (kein Bild vorhanden)&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Ebenfalls ein GPU-Partikelsystem, welches aber auf FramebufferObjects und Fragmentshader setzt. Damit sollte es auch auf älterer Hardware funktionieren. {{ShaderLink|GLSL_Partikel}}&lt;br /&gt;
&lt;br /&gt;
'''Extensions:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_ARB_texture_float]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sonstiges===&lt;br /&gt;
Hier kommt alles rein was sonst nirgendwo rein passt und eine neue Kategorie nicht lohnenswert ist.&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
| {{TableHead}}  | [[shader_game_of_life|Game of Life]] von [[Benutzer:dj3hut1|dj3hut1]] {{ShaderLevel|3}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Game_of_life_s.png|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Simuliert das altbekannte 'Game of Life' im Shader. {{ShaderLink|shader_game_of_life}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_Zufallsgenerator|Pseudozufallsgenerator]] von [[Benutzer:Coolcat|Coolcat]] {{ShaderLevel|4}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:shader_Zufallsgenerator.png|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Generierung von Pseudozufallszahlen im Shader mit [[GL_EXT_gpu_shader4]]. Außerdem eine Beispielanwendung: Ein reproduzierbares pesudozufälliges Verwirbelfeld für ein GPU-Partikelsystem. {{ShaderLink|shader_Zufallsgenerator}}&lt;br /&gt;
&lt;br /&gt;
'''Extensions:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[GL_EXT_gpu_shader4]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}} | [[shader_Mandelbrot|Mandelbrotfraktal Shader]] von [[Benutzer:Komoluna|Komoluna]]&lt;br /&gt;
| {{Table150R2}} | [[Bild:Mandelbrotshader blackwhite.png|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}} | Ein Shader zum generieren eines Mandelbrotfraktals. {{ShaderLink|shader_Mandelbrot}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Non-GLSL-Shader==&lt;br /&gt;
In diesem Abschnitt findet ihr Shader die mit einer anderen Technik als GLSL geschrieben wurden.&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
| {{TableHead}}  | [[shader_texturing(ARB)|Texturing (ARB)]] von [[Benutzer:dj3hut1|dj3hut1]] {{ShaderLevel|1}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Texarb_textured_s.png|166px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Demonstriert eine einfache Texturierung. {{ShaderLink|shader_texturing(ARB)}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_phong_per_pixel(ARB)|Phong per Pixel (ARB)]] von [[Benutzer:dj3hut1|dj3hut1]] {{ShaderLevel|1}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Phong_arb_s.png|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Per-Pixel-Beleuchtung. {{ShaderLink|shader_phong_per_pixel(ARB)}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_diffuse_bumpmapping(Cg)|Diffuse Bumpmapping (NVIDIA-Cg)]] von [[Benutzer:igel457|igel457]] {{ShaderLevel|2}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:shader_diffuse_bumpmapping_cg.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Wendet diffuses Bumpmapping auf eine beliebige Oberfläche an. {{ShaderLink|shader_diffuse_bumpmapping(Cg)}}&lt;br /&gt;
|-&lt;br /&gt;
| {{TableHead}}  | [[shader_surface_scattering(ARB)|Surface Scattering (ARB)]] von [[Benutzer:dj3hut1|dj3hut1]] {{ShaderLevel|3}}&lt;br /&gt;
| {{Table150R2}} | [[Bild:Scattering_s.jpg|150px|150px]]&lt;br /&gt;
|-&lt;br /&gt;
| {{TableCell}}  | Der Shader bestimmt die Distanz, die Licht durch ein Material zurücklegt. Auf diese Weise wird die Lichtdurchlässigkeit bestimmt. {{ShaderLink|shader_surface_scattering(ARB)}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Vorlage==&lt;br /&gt;
Die Shadersammlung braucht deine Hilfe um zu wachsen. Wenn du einen Shader bereitstellen könntest wäre dies ein toller Dienst für die Community.&lt;br /&gt;
&lt;br /&gt;
Folgende Schritte müssen gemacht werden um einen Shader einzutragen:&lt;br /&gt;
# Erstelle mit Hilfe der [[Shaderartikelvorlage]] einen neuen Artikel. Dazu den wiki-Code der Vorlage einfach kopieren und in den neuen Artikel einfügen. Der Artikelname sollte mit dem Präfix &amp;lt;tt&amp;gt;shader_&amp;lt;/tt&amp;gt; beginnen, z.B. &amp;lt;tt&amp;gt;shader_Wasser2d&amp;lt;/tt&amp;gt; für einen 2D Wassershader.&lt;br /&gt;
# Da Shader zu 90% optische Effekte bewirken, sollte (mindestens) ein aussagekräftiges Beispielbild im Shaderartikel hinterlegt werden. Eines der Bilder sollte dann auch hier in der Liste verlinkt werden.&lt;br /&gt;
# Füge deinen Shader in die Shadersammlung ein. Verwende dazu dieses Template:&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt; |-&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt; | &amp;lt;nowiki&amp;gt;{{TableHead}}  | [[shader_Wasser2d|2D Wassershader]] von [[Benutzer:DeinName|DeinName]]&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt; | &amp;lt;nowiki&amp;gt;{{Table150R2}} | [[Bild:Wassershader2D.jpg|150px|150px]]&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt; |-&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt; | &amp;lt;nowiki&amp;gt;{{TableCell}}&amp;lt;/nowiki&amp;gt;  | Einige Sätze zur Beschreibung des Shaders. &amp;lt;nowiki&amp;gt;{{ShaderLink|shader_Wasser2d}}&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt; &amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;'''Extensions:'''&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt;Liste von notwendigen Extensions.&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&amp;lt;tt&amp;gt; |-&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Keine Angst, es muss nicht alles auf Anhieb perfekt sein.&lt;br /&gt;
&lt;br /&gt;
Falls du Fragen oder Probleme mit der Vorlage hast, im [[DGL-Chat]] oder [http://www.delphigl.com/forum/ Forum] hilft man immer gerne.&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=shader_normal_debug_330&amp;diff=26303</id>
		<title>shader normal debug 330</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=shader_normal_debug_330&amp;diff=26303"/>
				<updated>2015-04-11T14:25:12Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Normalen Debugging mit OpenGL 3.3 Core=&lt;br /&gt;
Zurück zur [[Shadersammlung]]&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
!width=60%|Beschreibung&lt;br /&gt;
!width=20%|Autor&lt;br /&gt;
!width=20%|Version&lt;br /&gt;
|-&lt;br /&gt;
|Nützlicher Shader um die Normalen eines Modells anzuzeigen.&lt;br /&gt;
|Lord Horazont, auf Basis von [[shader normal debug]]&lt;br /&gt;
|1.0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Bilder==&lt;br /&gt;
{|&lt;br /&gt;
|[[Datei:normal_debug_shader_330.png|framed|Terrain mit angezeigten Normalen]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Beschreibung==&lt;br /&gt;
Dieser Shader nutzt einen Geometry Shader (OpenGL 3.3 Core) um die Normalen eines Modells anzuzeigen. Dazu wird das Modell einmal normal gerendert und dann nochmal mit dem Geometrieshader und einem spezialisierten Fragmentshader. &lt;br /&gt;
&lt;br /&gt;
==Besondere Vorraussetzungen==&lt;br /&gt;
OpenGL 3.30 Core&lt;br /&gt;
&lt;br /&gt;
Die Länge der anzuzeigenden Normalen wird über die Uniform-Variable ''normal_length'' gesteuert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
Vom Vertex Shader wird angenommen, dass er die Normale als ``out vec3 normal;`` übergibt.&lt;br /&gt;
&lt;br /&gt;
Geometry Shader:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;#version 330 core&lt;br /&gt;
&lt;br /&gt;
layout(triangles) in;&lt;br /&gt;
layout(line_strip, max_vertices=6) out;&lt;br /&gt;
&lt;br /&gt;
// (projection * view * model) matrix&lt;br /&gt;
uniform mat4 proj_view_model;&lt;br /&gt;
&lt;br /&gt;
// length of the normal (object space)&lt;br /&gt;
uniform float normal_length;&lt;br /&gt;
&lt;br /&gt;
in vec3 normal;&lt;br /&gt;
&lt;br /&gt;
out NDData {&lt;br /&gt;
    vec3 normal;&lt;br /&gt;
} nd_out;&lt;br /&gt;
&lt;br /&gt;
void main() {&lt;br /&gt;
   for (int i = 0; i &amp;lt; 3; i++) {&lt;br /&gt;
       gl_Position = gl_in[i].gl_Position;&lt;br /&gt;
       nd_out.normal = normal;&lt;br /&gt;
       EmitVertex();&lt;br /&gt;
       gl_Position = gl_in[i].gl_Position +&lt;br /&gt;
           proj_view_model * vec4(normal * normal_length, 0.f);&lt;br /&gt;
       nd_out.normal = normal;&lt;br /&gt;
       EmitVertex();&lt;br /&gt;
       EndPrimitive();&lt;br /&gt;
   }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fragment Shader:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;#version 330 core&lt;br /&gt;
&lt;br /&gt;
in NDData {&lt;br /&gt;
    vec3 normal;&lt;br /&gt;
} nd_in;&lt;br /&gt;
&lt;br /&gt;
out vec4 color;&lt;br /&gt;
&lt;br /&gt;
void main() {&lt;br /&gt;
    color = vec4(normalize(nd_in.normal) * 0.5 + 0.5, 1);&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=shader_normal_debug_330&amp;diff=26302</id>
		<title>shader normal debug 330</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=shader_normal_debug_330&amp;diff=26302"/>
				<updated>2015-04-11T14:24:54Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: Die Seite wurde neu angelegt: „=Normalen Debugging mit OpenGL 3.3 Core= Zurück zur Shadersammlung {|{{Prettytable_B1}} width=100% !width=60%|Beschreibung !width=20%|Autor !width=20%|Ver…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Normalen Debugging mit OpenGL 3.3 Core=&lt;br /&gt;
Zurück zur [[Shadersammlung]]&lt;br /&gt;
{|{{Prettytable_B1}} width=100%&lt;br /&gt;
!width=60%|Beschreibung&lt;br /&gt;
!width=20%|Autor&lt;br /&gt;
!width=20%|Version&lt;br /&gt;
|-&lt;br /&gt;
|Nützlicher Shader um die Normalen eines Modells anzuzeigen.&lt;br /&gt;
|Lord Horazont&lt;br /&gt;
|1.0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Bilder==&lt;br /&gt;
{|&lt;br /&gt;
|[[Datei:normal_debug_shader_330.png|framed|Terrain mit angezeigten Normalen]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Beschreibung==&lt;br /&gt;
Dieser Shader nutzt einen Geometry Shader (OpenGL 3.3 Core) um die Normalen eines Modells anzuzeigen. Dazu wird das Modell einmal normal gerendert und dann nochmal mit dem Geometrieshader und einem spezialisierten Fragmentshader. &lt;br /&gt;
&lt;br /&gt;
==Besondere Vorraussetzungen==&lt;br /&gt;
OpenGL 3.30 Core&lt;br /&gt;
&lt;br /&gt;
Die Länge der anzuzeigenden Normalen wird über die Uniform-Variable ''normal_length'' gesteuert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
Vom Vertex Shader wird angenommen, dass er die Normale als ``out vec3 normal;`` übergibt.&lt;br /&gt;
&lt;br /&gt;
Geometry Shader:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;#version 330 core&lt;br /&gt;
&lt;br /&gt;
layout(triangles) in;&lt;br /&gt;
layout(line_strip, max_vertices=6) out;&lt;br /&gt;
&lt;br /&gt;
// (projection * view * model) matrix&lt;br /&gt;
uniform mat4 proj_view_model;&lt;br /&gt;
&lt;br /&gt;
// length of the normal (object space)&lt;br /&gt;
uniform float normal_length;&lt;br /&gt;
&lt;br /&gt;
in vec3 normal;&lt;br /&gt;
&lt;br /&gt;
out NDData {&lt;br /&gt;
    vec3 normal;&lt;br /&gt;
} nd_out;&lt;br /&gt;
&lt;br /&gt;
void main() {&lt;br /&gt;
   for (int i = 0; i &amp;lt; 3; i++) {&lt;br /&gt;
       gl_Position = gl_in[i].gl_Position;&lt;br /&gt;
       nd_out.normal = normal;&lt;br /&gt;
       EmitVertex();&lt;br /&gt;
       gl_Position = gl_in[i].gl_Position +&lt;br /&gt;
           proj_view_model * vec4(normal * normal_length, 0.f);&lt;br /&gt;
       nd_out.normal = normal;&lt;br /&gt;
       EmitVertex();&lt;br /&gt;
       EndPrimitive();&lt;br /&gt;
   }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fragment Shader:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;#version 330 core&lt;br /&gt;
&lt;br /&gt;
in NDData {&lt;br /&gt;
    vec3 normal;&lt;br /&gt;
} nd_in;&lt;br /&gt;
&lt;br /&gt;
out vec4 color;&lt;br /&gt;
&lt;br /&gt;
void main() {&lt;br /&gt;
    color = vec4(normalize(nd_in.normal) * 0.5 + 0.5, 1);&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Datei:normal_debug_shader_330.png&amp;diff=26301</id>
		<title>Datei:normal debug shader 330.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Datei:normal_debug_shader_330.png&amp;diff=26301"/>
				<updated>2015-04-11T14:20:38Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: Screenshot vom Normal Debug Shader für OpenGL 3.30&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Screenshot vom [[shader normal debug 330|Normal Debug Shader für OpenGL 3.30]]&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Link&amp;diff=26300</id>
		<title>Link</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Link&amp;diff=26300"/>
				<updated>2015-03-29T10:19:11Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: /* Texturen */ fixed dead link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
!!!!!!!! NUTZT DIESE TABELLE ALS VORLAGE FÜR WEITERE LINKTABELLEN !!!!!!!&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[Link]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[Link]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Linksammlung soll allgemeine Links zu unterschiedlichen Themen bieten, die mit der Multimediaentwicklung zu tun haben.&lt;br /&gt;
{{Hinweis|Vielleicht ist eine Zusammenführung mit [[Tool]] sinnvoll!}}&lt;br /&gt;
{{Hinweis|Vielleicht ist eine Aufteilung in Unterseiten sinnvoll (möglicherweise mit Kategorien)}}&lt;br /&gt;
&lt;br /&gt;
= Entwicklung mit OpenGL =&lt;br /&gt;
&lt;br /&gt;
== Hardwareinfos ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://openglcaps.delphigl.de/ glCapsViewer Datenbank]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die Datenbank enthält alle mit [http://www.delphigl.com/forum/viewtopic.php?f=13&amp;amp;t=10010 glCapsViewer] gesammelten Informationen, also insbesondere OpenGL-Version und -Extensions verschiedener Grafikkarten.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20090417044334/http://delphi3d.net/hardware/listreports.php OpenGL Hardware Registry - Hardwareübersicht]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Datenbank aller Grafikkarten die in der Harware Registry vorhanden sind. Die einzelnen Artikel enthalten Infos darüber, welche Extensions von der Grafikkarte unterstützt werden.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20090506094005/http://delphi3d.net/hardware/ OpenGL Hardware Registry - Extensionübersicht]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Datenbank aller Extensions die in der Harware Registry vorhanden sind. Die einzelnen Artikel enthalten Infos darüber, welche Grafikkarten die entsprechende Extension unterstützen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
||[[Tutorial|DGL Wiki - Tutorial]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|DelphiGL.com ist Betreiber dieses Wikis und stellt eine Vielzahl Tutorials mit Schwehrpunkt OpenGL zur Verfügung. &lt;br /&gt;
Neben Tutorials für Einsteiger und OpenGL Anfänger gibt es auch fortgeschrittene Themen wie Shader oder Partikelsysteme.Sprache der Wahl ist hier Delphi.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.joachimrohde.com/cms/xoops/modules/articles/index.php?cat_id=1 joachimrohde.com]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet ihr deutsche Übersetzungen der bekannten NeHe Tutorials. Sprache der Wahl ist hier C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.cg.tuwien.ac.at/studentwork/VRSem96/OpenGL/ Technische Universität Wien]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Diese Seite bietet einen allgemeinen Überblick über die primären Funktionen von OpenGL und richtet sich vor allem an Einsteiger.&lt;br /&gt;
|-&lt;br /&gt;
|[http://nehe.gamedev.net/ Nehe] &lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die berühmt berüchtigten NeHe Tutorials sind eine umfangreiche Sammlung an Tutorials zum Thema OpenGL. Von Anfängertutorials bis hin zu komplexen Effekten wird alles behandelt. Sprache der Wahl ist hier C++. (Eine Übersetzung der NeHe Tutorials findet ihr bei Joachim Rhode (siehe oben). )&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.sulaco.co.za/tut.htm sulaco.co.za] &lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| OpenGL Beispiele in Delphi&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenGL Funktionen ==&lt;br /&gt;
&lt;br /&gt;
=== GL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GL|DGL Wiki - Kategorie GL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten OpenGL Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL.tar.gz OpenGL.org - Original Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die Originalspezifikationen der OpenGL 1.0 und OpenGL 1.1 Befehle. (Diese HTML-Dokumente sind nicht Copy&amp;amp;Paste freundlich, da sie vermutlich automatisch aus vorhandenen Dateien (Postscript) erzeugt wurden.)&lt;br /&gt;
|-&lt;br /&gt;
|[http://developer.3dlabs.com/documents/glmanpage_index.htm 3dLabs]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die Originalspezifikationen der OpenGL 1.0 und OpenGL 1.1 Befehle.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20040616082839/http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von Englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glfunc01_4f03.asp MSDN von Microsoft]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|OpenGL Dokumentation in der MSDN. Die Erklärung der MSDN sind meist keine reinen Kopien der Originalspezifikationen, sondern enthalten hin und wieder auch zusätzliche Informationen, oder formulieren Texte auf verständlichere Art und Weise.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLU ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GLU|DGL Wiki - Kategorie GLU]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten GLU Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glu/ OpenGL.org - Original Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Originalspezifikationen für die GLU Befehle. (Diese HTML-Dokumente sind nicht Copy&amp;amp;Paste freundlich, da sie vermutlich automatisch aus vorhandenen Dateien (Postscript) erzeugt wurden.)&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20040616082839/http://www.mevis.de/~uwe/opengl/opengl.html mevis.de mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glufnc01_0e43.asp MSDN von Microsoft]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|GLU Dokumentation in der MSDN. Die Erklärung der MSDN sind meist keine reinen Kopien der Originalspezifikationen, sondern enthalten hin und wieder auch zusätzliche Informationen, oder formulieren Texte auf verständlichere Art und Weise.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLX ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GLX|DGL Wiki - Kategorie GLX]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten GLX Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glx/ OpenGL.org - Original  Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Orgninalspezifikationen der GLX Befehle bei OpenGL.org.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20040616082839/http://www.mevis.de/~uwe/opengl/opengl.html mevis.de mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von Englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== WGL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:WGL|DGL Wiki - Kategorie WGL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Wiki-Kategorie die alle übersetzten WGL Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20071218151417/http://developer.3dlabs.com/documents/wglmanpage_index.htm 3dLabs]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung einiger WGL Befehlsspezifikationen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLUT ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://freeglut.sourceforge.net/docs/api.php The freeglut Projekt]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Englischsprachige Dokumentation zum OpenGL Utility Toolkit kurz GLUT.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SDL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:SDL|DGL Wiki - Kategorie SDL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Übersicht aller auf die SDL bezogenen Artikel hier im Wiki. Darunter befinden sich eine Vielzahl von Übersetzungen der SDL Befehlspezifikationen. Diese können auch in der [[SDL-Funktionsübersicht]] gefunden werden.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.libsdl.org/cgi/docwiki.cgi/SDL_20API libsdl.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Das Dokumentationswiki von libSDL.org enthält die komplette Dokumenation zur SDL in englischer Sprache.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.freepascal-meets-sdl.net/ freepascal meets sdl]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Eine Webseite die speziell Informationen über die Programmierung von SDL unter Freepascal zur Verfügung stellt.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== FAQs ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[FAQ| DGL Wiki - FAQ]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein FAQ (Frequently Asked Questions = Häufig gestellte Fragen) zu DelphiGL.com und dem DGL Wiki.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dsource.de/faq/index.htm 3dsource.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein FAQ zu Fragen rund um OpenGL.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Effekte und Techniken mit OpenGL ==&lt;br /&gt;
&lt;br /&gt;
===Glow===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamasutra.com/view/feature/2107/realtime_glow.php Gamasutra]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt, wie man mit Hilfe von Shader(hier DirectX Shader) den Gloweffekt in Realtime umsetzt. Dabei wird erst die Technik dahinter erklärt, und dann wie man sie Schritt für Schritt umsetzt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20071118043007/http://collective.valve-erc.com/index.php?go=tron1 valve-erc.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Schritt für Schritt Anleitung, wie man mit Hilfe von Cg in OpenGL den Glow Effekt realisieren kann &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===HDR===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20090601052809/http://www.gamedev.net/columns/hardcore/hdrrendering/ gamedev.net]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Hier wird sehr kurz eingeleitet, was HDR Rendering überhaupt ist, dann wird der Aufbau des *.hdr Formats erläutert, und dann geht es schon von 0 auf 100 zum Programmieren. Erklärungen gibt es kaum, dafür werden fertige Shader(für DirectX) geboten. &lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20090601202039/http://www.gamedev.net/reference/articles/article2208.asp gamedev.net]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt auch nur etwas kurz das HDR Verfahren, jedoch mit mehr mathematischen Hintergrund in Sachen Tonemapping. Beispielcode für Tonemapping in C++ liegt bei. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===BSP Bäume===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20081201115631/http://www.3dtechdev.com/tutorials/leafbsp/3dbsptrees.html 3dtechdev.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Das beste Dokument überhaupt, für allem die selber BSP Bäume compilieren möchte. Ist belegt mit sehr viel Grafik. Erst beginnt er das Prinzip allgemein zum umschreiben, dann wird alles genau erläutert, und mit verständlichen Pseudocode untermalt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20081019041535/http://www.3dtechdev.com/tutorials/illegalgeometry/illegalgeometrytut.html 3dtechdev.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Nicht ganz so gut geworden, wie sein erstes Tutorial, aber erklärt auch sehr gut, wie man illegale Geometrie aufspürt und beseitigt. Wieder mit Grafiken und Pseudocodes verständlich belegt. Hiermit kann man seinem Map-Compiler den letzten Schliff verleien. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/reference/articles/article981.asp Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Von Michael Abrash, dürfte der ''Erfinder'' von Quake sein. Naja, meine Englischkenntnisse reichen hier nicht ganz aus, um den Text zu verstehen. Ist etwas umständlich geschrieben. Dafür mit Grafiken unterlegt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.zfx-online.de/Tutorials.php?ID=11 Part 1 - Allgemein]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Einzigste deutsche Referenz zu BSP Bäumen, dafür Daumen hoch. Ist aber nicht das Wahre: schlechter C Code, und ich hatte auch nicht den Einduck, das er die Theorie zu diesem Thema bis in die Tiefe verstanden hat(oder er wollte es nicht zu akademisch Erklären oO). Aber ein guter Einstieg in dieses Thema. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.zfx-online.de/Tutorials.php?ID=13 Part 2 - Kollision und PVS]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20060516103821/http://www.cs.uwec.edu/~stevende/cs455/programs/GameTutorials%20-%20Quake%203%20BSP%20Format.htm Quake3 *.bsp Format]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die beste Dokumentation für das BSP Format, die ich gefunden habe, besser als den Quake3 Sourcecode zu durchforsten. Leider etwas magere Eklährung zu wichtigen Themen wie Patches(Curved Surfaces). Ich pers. hatte jetzt 1 1/2 Wochen gebraucht, um das *.bsp Format vollständig zu verstehen. Ist aber anscheinend die beste Format Dokumentation im Netz. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_q2bsp.shtml Quake2 *.bsp Format]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Kann auch nur soviel sagen, wie beim Link zuvor. Es fehlen hier auch zum Teil Informationen. Man muss halt viel ausprobieren, und sich den Quake 2 Source zu Herzen nehmen, damit man es versteht. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Himmel &amp;amp; Wolken===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/community/forums/topic.asp?topic_id=86024 Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Guter Thread mit vielen Anregungen und Links. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/community/forums/topic.asp?topic_id=135654 Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Hier wird die Diskussion zum obigen Link weitergeführt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://freespace.virgin.net/hugo.elias/models/m_clouds.htm Plasma]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine nette Idee um Plasma in Echtzeit zu generieren, und zu verändern. Leider nichts zum Shading. &lt;br /&gt;
|-&lt;br /&gt;
|[http://nis-lab.is.s.u-tokyo.ac.jp/~nis/cdrom/sig00_cloud.pdf 3D Wolken]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Paper über generieren und rendern von 3 dimensionalen Wolken inklusive Schatten und Lichtstrahlen. Ich hab nur den Lichtstahlen-Algorithmus ausprobiert. Saulangsam aber sehr einfach zu implementieren. Einen Blick ist es auf jeden Fall wert. &lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20031011052035/http://www.geocities.com/ngdash/whitepapers/skydomecolor.html Skydome]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Wenn man mal schnell gute Farben für seinen Skydome braucht... &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Terrain===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_geomipmaps.shtml FlipCode]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Artikel zu Geomipmaping. Zummindest hab ich es hier zum ersten mal gesehen. Und es funzt ganz gut. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.vterrain.org Virtual Terrain Project]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Seite mit Links und Artikeln zu allem, was etwas mit Terrainrendering zu tun hat.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sonstiges===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[Materialsammlung]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Sammlung von gängigen Parametern für [[glMaterial]] hier im Wiki.&lt;br /&gt;
|-&lt;br /&gt;
|[http://freespace.virgin.net/hugo.elias/radiosity/radiosity.htm Radiosity]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Erklärt sehr schön die Funktionsweise von Radiosity, liefert Beispielcodes und ist recht gut illustriert.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20050825110920/http://legion.gibbering.net/projectx/paper/shadow%20mapping/ Shadowmapping]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt das Trapezoidal Shadow Mapping - Verfahren für gerichte Lichter.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_generatingnames.shtml Namensgenerator]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Per Zufallsgenrator Namen erzeugen, und nie wieder kreativ werden müssen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.paulsprojects.net/tutorials/simplebump/simplebump.html Bumpmapping]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Bumpmapping auf Lowend-Grakas. Damals war Bumpmapping noch was ganz tolles... &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.paulsprojects.net/opengl/dpreflect/dpreflect.html Dot Product Reflect]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|zwar nur ne Demo, aber wenn man schon immer mal mit EMBM das Wasser aus Morrowind nachproggen wollte... &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Beispiele/Demos mit Quelltext ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.delphigl.de DelphiGL.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier finden sich besonders eindrucksvolle Newton Physik Demos. Meißtens sogar mit Quelltext.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.shadow3d.de.vu/ Shadow 3D]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier finden sich zwei Demos wie man Quake 3 Modelle lädt und eine glSlang Demo&lt;br /&gt;
|-&lt;br /&gt;
|[[Shadersammlung]] im DGL Wiki&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier findet man freie Shadersourcen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.humus.name Humus]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Diverse eindrucksvolle Demos zu verschiedenen Techniken, häufig mit Quelltext in C (teilweise OpenGL / DirectX)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== weitere Links ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www-user.tu-chemnitz.de/~pester/Lehre/CompGeo.pdf CompGeo.pdf]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Script &amp;quot;Einführung in die Computergeometrie&amp;quot; von Dr. Pester (TU-Chemnitz). Ideales Nachschlagewerk für die Mathematik die einem bei der Grafikprogrammierung so begegnet.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.robsite.de/ robsite.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Auf dieser riesigen Seite finden sich auch viele weitere Links über verschiedene Themen der 3D Programmierung.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dlinks.com/links.cfm?categoryid=3&amp;amp;subcategoryid=21 3dlinks.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Diese Seite hat es sich zur Hauptaufgabe gemacht Links auf Seiten mit dem Thema 3D zu sammeln.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.two-kings.de/links.html two-kings.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Sammlung diverser interessanter Links, vorallem auf Themen im gamedev-Forum verweisend.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.delgine.com Delgine.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Heimat des freien 3D Modellers &amp;quot;DeleD&amp;quot;, welcher in Delphi programmiert ist. Ihr findet dort auch Modellpackete, Texturpackete, Plugins und Hilfe bei der Programmierung von Delphi und OpenGL.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Spieleentwicklung =&lt;br /&gt;
&lt;br /&gt;
==Allgemein==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.spieleprogrammierung.net/ Spieleprogrammierung - OpenGL - GLSL - OpenAL - KI - Animation - Spielephysik]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr Artikel, Tutorials und Programmbeispiele rund um das Thema Spieleprogrammierung. Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://graphics-and-physics-framework.spieleprogrammierung.net/ OpenGL Graphics And Physics Framework]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr ein frei verfügbares OpenGL basiertes Grafik und Physik Framework (LGPL-Lizenz) samt zugehöriger Probammbeispiele. Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://audio-framework.spieleprogrammierung.net/ OpenAL Audio Framework]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr ein frei verfügbares OpenAL Audio Framework (LGPL-Lizenz) samt zugehöriger Probammbeispiele. Unterstützt werden 3D Sounds, EFX (EAX Alternative) Reverb Effekte sowie Audio Streaming (Music and Voices). Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://spieleentwicklung-im-web.spieleprogrammierung.net/ Spieleentwicklung im Web]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr Links (E-Books, Präsentationen, wissenschaftliche Arbeiten und Tutorials) zu verschiedenen Themengebieten der Spieleentwicklung.&lt;br /&gt;
|-&lt;br /&gt;
|[http://harablog.wordpress.com/2011/08/26/fast-pathfinding-via-symmetry-breaking/ Fast pathfinding via symmetry breaking]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Optimierungen für A* Pfadsuche durch Ausnutzung von Symmetrien.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Kopierschutz==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://inner-smile.com/nocrack.phtml Inner-Smile.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Seite mit Gedanken zum Thema &amp;quot;Wie schütze ich meine Programme vor Crackern&amp;quot;. Falls die Seite nicht erreichbar ist hat Google noch ne [http://www.google.com/search?q=cache:hpqPT5G4WB0J:www.inner-smile.com/nocrack.phtml+http://inner-smile.com/nocrack.phtml&amp;amp;hl=de&amp;amp;gl=de&amp;amp;ct=clnk&amp;amp;cd=1 Version im Archiv].&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Künstliche Intelligenz ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20080319034335/http://www.kbs.uni-hannover.de/Lehre/KI2/Presentationen/presentation9798/esprit/spieltheorie/spieltheorie.html Uni-Hannover - Spieltheorie]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Artikel über die Grundlagen von KI in Spielen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20080927010337/http://www.robsite.de/tutorials.php?tut=ki Robsite KI-Tutorials]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Sammlung von Texten zum Thema KI in Spielen. Beispiele sind meist in C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://ai-depot.com/ AI-Depot.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Seite die sich ausschließlich mit KI in Spielen beschäftigt.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ai-junkie.com/links.html AI-Junkie.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Linkseite mit vielen KI relevanten Links. Die Seite AI-Junie selbst behandelt auch viele Themen rund um KI.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.aiwisdom.com/ AIWisdom.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Seite die sich mit KIs in Spielen beschäftigt und sich zum Ziel gesetzt hat, alle Artikel zum Thema zu finden und zu Katalogisieren. Es gibt hier auch Artikel über die KIs bestehender Spiele.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.aiguru.com/ AIGuru.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Newsseite zum Thema KI, Künstliches Leben, Hiernforschung, Robotik, Nanotechnologie - Halt alles was Spaß macht.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.generation5.org/ Generation5.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Seite über KI, Robotik, etc. . Leider scheint die Seite Probleme zu haben regelmäßig aktualisiert zu werden. Aber zumindest sollte man einige Artikel finden. Die werden ja nicht schlecht.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20080702005527/http://www.gameai.com/ www.gameai.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|''Wurde Januar 2010 als down gemeldet. Weiss irgendwer etwas genaueres?'' Seite zum Thema KI in Spielen. Soll wohl einen gewissen Stellenwert in der AI-Szene haben.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www-i1.informatik.rwth-aachen.de/~algorithmus/algo19.php Algorithmus der Woche - Informatikjahr 2006]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Vielleicht schon etwas älter aber doch eine gute Anleitung um eine einfache Schach-KI zu erstellen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Ressourcen =&lt;br /&gt;
In dieser Gruppe finden sich Links um die Ressourcen für Eure Projekte zu erstellen.&lt;br /&gt;
&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;80%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://opengameart.org/ opengameart.org]&lt;br /&gt;
|Eine Seite die es jedem anbietet Spielressourcen wie Musik, Texturen, 3D-Modelle und anderes hochzuladen und diese unter einer beliebigen Lizenz zu veröffentlichen. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Texturen / 2D-Grafiken ==&lt;br /&gt;
&lt;br /&gt;
'''Legende:'''&lt;br /&gt;
:'''Kostenpflichtige Seiten''' sind mit einem * zu '''kennzeichnen'''&lt;br /&gt;
:GPL: Kompatibel mit der GPL&lt;br /&gt;
:MPL: Kompatibel mit der MPL&lt;br /&gt;
:OSS: Verwendung in OpenSource Software nicht verboten&lt;br /&gt;
:CSS: Verwendung in ClosedSource Software nicht verboten&lt;br /&gt;
:Komm: Verwendung in kommerzieller Software nicht verboten&lt;br /&gt;
&lt;br /&gt;
=== Texturen ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;|Genre&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;|Lizenz&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|GPL&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|MPL&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|OSS&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|CSS&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Komm.&lt;br /&gt;
!width=&amp;quot;35%&amp;quot;|Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.davegh.com/ davegh.com]&lt;br /&gt;
|Fantasy&lt;br /&gt;
|[http://www.davegh.com/legal.php Eigene]&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|Die Lizenz vererbt sich in die Projekte hinein.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.cgtextures.com/ cgtextures.com]&lt;br /&gt;
|Allgemein&lt;br /&gt;
|[http://www.cgtextures.com/content.php?action=license Eigene]&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|Die Lizenz will im wesentlichen verhindern das Texturen in anderen Textursammlungen auftauchen. So wie ich das verstehe ist es kein Problem die Texturen unter einer anderen Lizenz zu veröffentlichen als die eigentliche Software. Die Software kann also sehr wohl OpenSource sein. Im Zweifelsfalls einfach den Support anschreiben, der ist sehr nett.&lt;br /&gt;
|-&lt;br /&gt;
|[https://wiki.openstreetmap.org/wiki/Texture_Library OpenStreetMap Texture Library]&lt;br /&gt;
|Allgemein &lt;br /&gt;
|Public Domain&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|Die Texturen dienen der Visualisierung der 3D-Gebäude im OpenStreetMap Projekt&lt;br /&gt;
|-&lt;br /&gt;
|url&lt;br /&gt;
|Futuristisch, Mittelalter, etc.&lt;br /&gt;
|CC-BY-SA, etc., gerne auch mit Direktlink auf die Lizenzseite, so vorhanden.&lt;br /&gt;
|✔/✘/?&lt;br /&gt;
|✔/✘/?&lt;br /&gt;
|✔/✘/?&lt;br /&gt;
|✔/✘/?&lt;br /&gt;
|✔/✘/?&lt;br /&gt;
|Alle Bilder sind von Käse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Sonstige 2D-Grafiken ===&lt;br /&gt;
&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;45%&amp;quot;|Beschreibung&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;|Lizenz&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|GPL&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|MPL&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|OSS&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|CSS&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Komm.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.famfamfam.com/lab/icons/silk/ famfamfam silk]&lt;br /&gt;
|Iconset, welches inzwischen relativ weit verbreitet ist. 700 sauber gezeichnete, erkennbare PNG-Icons in TrueColor. Man kann praktisch jede (Arbeits-)Anwendung mit diesem Set vollständig mit Icons versorgen.&lt;br /&gt;
|[http://creativecommons.org/licenses/by/2.5/ CC-BY 2.5], [http://creativecommons.org/licenses/by/3.0/ CC-BY 3.0]&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Texturerstellung ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://3d.diehlsworld.de/textures/index.htm 3d.diehlsworld.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet ihr kurze aber inhaltlich reiche Tutorials zu der Frage &amp;quot;Wie erstelle ich XXXXX-Texturen&amp;quot;. Dabei reicht die Palette von Untergrundtexturen wie Gras, Sand , Fels und Wasser (und Kombinationen dieser) bis hin zu Blitzen und Partikeln. Als Programm wird hier Photoshop verwendet.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gimps.de/gimp/textur-muster/ gimps.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Schritt für Schritt Anleitungen wie man mit Gimp verschiedene Texturen erstellt.&lt;br /&gt;
|-&lt;br /&gt;
|[http://cbt.k090999.de/gimp.php#texturen k090999.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Gimptutorials zum Erstellen verschiedene Texturen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Modelle / 3D-Grafiken ==&lt;br /&gt;
&lt;br /&gt;
=== Blender ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://blendpolis.de/f/viewtopic.php?t=5786 Blendpolis]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Ein Thread im Forum von [http://blendpolis.de Blendpolis] in dem '''sehr''' viele Tutorials aufgelistet sind&lt;br /&gt;
|-&lt;br /&gt;
|[http://blendpolis.de/f/article_cat.php?fldAuto=7 Blendpolis]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Eigentliche Tutorial Seite von [http://blendpolis.de Blendpolis] die Auswahl ist hier aber nicht so groß&lt;br /&gt;
|-&lt;br /&gt;
|[http://wikivid.com/index.php/Blender Blender at wikivid.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Linksammlung von Blender Video Tutorials &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.blender.org/education-help/tutorials/getting-started/ blender3d.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Auch die Heimatseite von Blender bietet viele Tutorials unter anderm auch Video Tuorials&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.Blenderunderground.com Blenderunderground]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| '''sehr gute''' Video-Tutorials&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sounds ==&lt;br /&gt;
&lt;br /&gt;
===Musik===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.jamendo.com/ Jamendo.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Viele Künstler stellen hier ihre Alben unter einer Creative Commons Lizenz online. Man kann dort die Künstler auch kontaktieren und fragen ob man ihre Musik nutzen kann. Taugt außerdem als Radio! ;)&lt;br /&gt;
|-&lt;br /&gt;
|[http://incompetech.com/m/c/royalty-free/ Incompetech.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Viele sehr schön gemacht instrumentale Musik aus allen möglichen Genres. Sie ist frei verwenderbar, wenn man den Macher der Musik (Kevin MacLeod) in seinem Programm erwähnt. Aber das hat er auch verdient. Folgende Programme nutzen beispielsweise (auch) Musik von incompetech.com:&lt;br /&gt;
* OpenParty&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Soundeffekte===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.freesound.org/ freesound.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Diverse Sounds unter [http://www.creativecommons.org/ CreativeCommons] Lizenzen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Soundprogramme===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://audacity.sourceforge.net/?lang=de Sourceforgeseite von Audacity]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein einfaches, freies Programm um Sounddateien zu bearbeiten. Man kann es auch nutzen um Soundeffekte neu zu erstellen, indem man z.B. ein Geräusch mit dem Mikrofon aufnimmt und einige Effekt anwendet, um es passender und nicht mehr aufgenommen klingen zu lassen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://lmms.sourceforge.net/ LMMS]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|LMMS (Linux MultiMedia Studio) ist ein OpenSource+Freeware Composer-Programm ähnlich zum bekannteren aber auch teuren CuBase(r). Trotz des Namens auch für Windows erhältlich.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=GL_ARB_imaging&amp;diff=26262</id>
		<title>GL ARB imaging</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=GL_ARB_imaging&amp;diff=26262"/>
				<updated>2014-07-03T14:09:07Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: /* Ressourcen */ delphi3d.net hardwaredatenbank -&amp;gt; glCapsViewer datenbank&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Unvollständig}}&lt;br /&gt;
= GL_ARB_imaging =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Abfragestring ==&lt;br /&gt;
GL_ARB_imaging&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
Diese Extension wurde mit OpenGL 1.2 eingeführt und vereint die folgenden Extensions zu OpenGL 1.1 im sogenannten Imaging Subset.&lt;br /&gt;
:Farbtabellen [[GL_SGI_texture_color_table]]&lt;br /&gt;
:Faltung (Convolution) [[GL_EXT_convolution]]&lt;br /&gt;
:Die Color Matrix [[GL_SGI_color_matrix]] &lt;br /&gt;
:Histogramm und Minimum, Maximum Funktionen [[GL_EXT_histogram]]&lt;br /&gt;
:Zusätzliche Blending Equations und Blending Funktionen [[GL_EXT_blend_subtract]],[[GL_EXT_blend_minmax]].&lt;br /&gt;
&lt;br /&gt;
Die Operationen werden ausschliesslich beim PixelTransfer [[glDrawPixels]], [[glCopyPixels]] angewandt.&lt;br /&gt;
&lt;br /&gt;
=== '''Verwendung''' ===&lt;br /&gt;
&lt;br /&gt;
=== '''Operanden''' ===&lt;br /&gt;
&lt;br /&gt;
== Ressourcen ==&lt;br /&gt;
[http://delphigl.de/glcapsviewer/listreports.php?listreportsbyextension=GL_ARB_imaging Hardware Unterstützung]&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Texelgenaue_Texturkoordinate&amp;diff=26237</id>
		<title>Texelgenaue Texturkoordinate</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Texelgenaue_Texturkoordinate&amp;diff=26237"/>
				<updated>2014-05-27T18:17:41Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: Zusammenfassungstext + korrigierte Aussage bei Mipmap für GL_NEARESt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Texelgenaue Texturkoordinate|Texelgenaue Texturkoordinaten]] werden immer dann gebraucht, wenn man mehrere Bilder in einer Textur hat, z.B. bei einer [[Tilemap]] oder wenn man zur Laufzeit einen dynamischen [[Texturatlas]] erzeugt.&lt;br /&gt;
&lt;br /&gt;
= Anwendungsgebiet =&lt;br /&gt;
&lt;br /&gt;
[[Datei:Beispiel_Texturatlas.png|thumb|256px|Beispiel eines Texturatlas. Unterschiedliche Texturen sind in einem Bild untergebracht.]]&lt;br /&gt;
&lt;br /&gt;
Ein häufiges Anwendungsgebiet ist wie schon erwähnt das Addressieren von Texturen in einem Texturatlas. Dazu muss man Pixelgenau die einzelnen Teilbilder herausschneiden, um sie auf Objekten anzubringen.&lt;br /&gt;
&lt;br /&gt;
Wenn der Ausschnitt die Pixel im Rechteck ''x0..x1'', ''y0..y1'' abdeckt, dann ist die intuitive Methode um die Texturkoordinaten ''u0,u1,v0,v1'' für eine Textur der Breite ''w'' und Höhe ''h'' zu erhalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  u0 = x0 / w&lt;br /&gt;
  u1 = x1 / w&lt;br /&gt;
  v0 = y0 / h&lt;br /&gt;
  v1 = y1 / h&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
&lt;br /&gt;
Um das zweite Tile von links in der untersten Zeile auszuwählen, müssen wir das Rechteck mit ''x0=64'', ''x1=128'', ''y0=192'', ''y1=256'' aus der Textur mit ''w=256'', ''h=256'' rausschneiden. Damit erhalten wir:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  u0 = x0 / w = 0.2500&lt;br /&gt;
  u1 = x1 / w = 0.5000&lt;br /&gt;
  v0 = y0 / h = 0.7500&lt;br /&gt;
  v1 = y1 / h = 1.0000&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Problematik =&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Die Problematik tritt nicht auf, wenn man '''GL_NEAREST''' verwendet. In dem Fall reicht es, die obige Methode zur Berechnung der Texturkoordinaten zu verwenden.}}&lt;br /&gt;
&lt;br /&gt;
Diese Koordinaten bergen allerdings Probleme in sich, sobald man einen anderen Texturfilter als [[glTexParameter#Vergleich_zwischen_verschiedenen_Texturfilter|GL_NEAREST]] verwendet und die Texel nicht 1:1 auf Pixel übertragen werden (also irgendeine Form der Skalierung der Textur statt findet).&lt;br /&gt;
&lt;br /&gt;
[[Datei:Texturatlas_bleeding.png|frame|center|Ein Tile mit den obigen Texturkoordinaten auf ein 4×4 größeres Quad gezeichnet]] Dann kommt es zu ''bleeding''-Effekten, bei denen die nebenanliegenden Texturen in das gewollte Bild reinblenden. In dem Beispiel oben wurde das zweite Tile von links ganz unten (64 px×64 px) auf ein Quad welches mit 256 px×256 px gerendert wurde mit GL_LINEAR aufgebracht. Man kann deutlich erkennen wie die nebenanliegenden Tiles in das Tile hineinbleeden.&lt;br /&gt;
&lt;br /&gt;
== Lösung 1: Texturaddressierung verändern ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Texturatlas_offsetcoords.png|frame|Tile welches mit den links stehenden Koordinaten auf ein gleich großes Quad gezeichnet wurde (Screenshot um Faktor 2×2 interpolationsfrei hochskaliert)]]Eine Lösung für dies, die oft genannt wird, ist, den Rahmen der Texturaddressierung in die mitte der Texel zu legen. Dazu addiert bzw. subtrahiert man von den Texturkoordinaten einen halben Texel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  u0 = (x0 + 0.5) / w&lt;br /&gt;
  u1 = (x1 - 0.5) / w&lt;br /&gt;
  v0 = (y0 + 0.5) / h&lt;br /&gt;
  v1 = (y1 - 0.5) / h&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann liegen die Ränder des angezeigten Quads genau auf der Texelmitte, es findet also keine Überblendung mit nebenanliegenden Tiles statt. Dieser Ansatz hat allerdings ein anderes Problem: Die Texturen verschwimmen schon bei einer 1:1 Abbildung, wie im Screenshot rechts zu sehen.&lt;br /&gt;
&lt;br /&gt;
== Lösung 2: Rahmen hinzufügen ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Texturatlas_bordered.png|frame|center|Tile mit Rahmen, welches mit den originalen Texturkoordinaten auf ein 4×4 größeres Quad gezeichnet wurde]]Man kann den ''bleeding''-Effekt auch beheben, indem man einen 1 px Rahmen um die Texturen im Atlas hinzufügt, welcher die Farbe des anliegenden Texturpixels hat (und in den Ecken eventuell eine lineare Überblendung). Obiges Bild demonstriert, dass dies das Problem löst.&lt;br /&gt;
&lt;br /&gt;
Allerdings hilft diese Lösung nicht, wenn man (automatisch generierte) Mipmaps verwendet. Dafür muss man den Rahmen für jedes Mipmap-Level verdoppeln, was ab einem gewissen Mipmap-Level zu viel Platz benötigt. Oft ist es allerdings so, dass man, wenn man Mipmaps braucht (also unterschiedliche Skalierungen einer Textur anzeigen will) sowieso keine pixelgenaue Darstellung benötigt.&lt;br /&gt;
&lt;br /&gt;
Ein weiterer Nachteil ist, dass man N×M+4 Pixel verschwendet, von denen nur die Hälfte verwendet werden.&lt;br /&gt;
&lt;br /&gt;
== Zusammenfassung ==&lt;br /&gt;
&lt;br /&gt;
Wir stellen fest, dass alle Methoden ihre Vor- und Nachteile haben. Es gibt keine Pauschallösung für das Problem, wenn man nicht alle Bilder in separate Texturen packen will. Man muss sich also klar werden, welche Kriterien wichtig sind und dann die Methodik danach auswählen. Dazu sollte folgende Tabelle hilfreich sein:&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}} width=&amp;quot;100%&amp;quot;&lt;br /&gt;
!Technik / Kriterium&lt;br /&gt;
!Kein ''bleeding''&lt;br /&gt;
!Pixelgenaue Darstellung bei 1:1 Rendering&lt;br /&gt;
!Mipmap-Kompatibilität&lt;br /&gt;
!Lineares Filtering bei Zoom&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left&amp;quot; |Normal mit GL_NEAREST&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left&amp;quot; |Normal mit GL_LINEAR (ggfs. + Mipmap)&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left&amp;quot; |Lösung 1: Ausschnitt verkleinern&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left&amp;quot; | Lösung 2: Rahmen hinzufügen&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Texelgenaue_Texturkoordinate&amp;diff=26235</id>
		<title>Texelgenaue Texturkoordinate</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Texelgenaue_Texturkoordinate&amp;diff=26235"/>
				<updated>2014-05-27T13:15:24Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: GL_NEAREST als Option in der Zusammenfassung hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Texelgenaue Texturkoordinate|Texelgenaue Texturkoordinaten]] werden immer dann gebraucht, wenn man mehrere Bilder in einer Textur hat, z.B. bei einer Tilemap oder wenn man zur Laufzeit einen dynamischen Texturatlas erzeugt.&lt;br /&gt;
&lt;br /&gt;
= Anwendungsgebiet =&lt;br /&gt;
&lt;br /&gt;
[[Datei:Beispiel_Texturatlas.png|thumb|256px|Beispiel eines Texturatlas. Unterschiedliche Texturen sind in einem Bild untergebracht.]]&lt;br /&gt;
&lt;br /&gt;
Ein häufiges Anwendungsgebiet ist wie schon erwähnt das Addressieren von Texturen in einem Texturatlas. Dazu muss man Pixelgenau die einzelnen Teilbilder herausschneiden, um sie auf Objekten anzubringen.&lt;br /&gt;
&lt;br /&gt;
Wenn der Ausschnitt die Pixel im Rechteck ''x0..x1'', ''y0..y1'' abdeckt, dann ist die intuitive Methode um die Texturkoordinaten ''u0,u1,v0,v1'' für eine Textur der Breite ''w'' und Höhe ''h'' zu erhalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  u0 = x0 / w&lt;br /&gt;
  u1 = x1 / w&lt;br /&gt;
  v0 = y0 / h&lt;br /&gt;
  v1 = y1 / h&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
&lt;br /&gt;
Um das zweite Tile von links in der untersten Zeile auszuwählen, müssen wir das Rechteck mit ''x0=64'', ''x1=128'', ''y0=192'', ''y1=256'' aus der Textur mit ''w=256'', ''h=256'' rausschneiden. Damit erhalten wir:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  u0 = x0 / w = 0.2500&lt;br /&gt;
  u1 = x1 / w = 0.5000&lt;br /&gt;
  v0 = y0 / h = 0.7500&lt;br /&gt;
  v1 = y1 / h = 1.0000&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Problematik =&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Die Problematik tritt nicht auf, wenn man '''GL_NEAREST''' verwendet. In dem Fall reicht es, die obige Methode zur Berechnung der Texturkoordinaten zu verwenden.}}&lt;br /&gt;
&lt;br /&gt;
Diese Koordinaten bergen allerdings Probleme in sich, sobald man einen anderen Texturfilter als [[glTexParameter#Vergleich_zwischen_verschiedenen_Texturfilter|GL_NEAREST]] verwendet und die Texel nicht 1:1 auf Pixel übertragen werden (also irgendeine Form der Skalierung der Textur statt findet).&lt;br /&gt;
&lt;br /&gt;
[[Datei:Texturatlas_bleeding.png|frame|center|Ein Tile mit den obigen Texturkoordinaten auf ein 4×4 größeres Quad gezeichnet]] Dann kommt es zu ''bleeding''-Effekten, bei denen die nebenanliegenden Texturen in das gewollte Bild reinblenden. In dem Beispiel oben wurde das zweite Tile von links ganz unten (64 px×64 px) auf ein Quad welches mit 256 px×256 px gerendert wurde mit GL_LINEAR aufgebracht. Man kann deutlich erkennen wie die nebenanliegenden Tiles in das Tile hineinbleeden.&lt;br /&gt;
&lt;br /&gt;
== Lösung 1: Texturaddressierung verändern ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Texturatlas_offsetcoords.png|frame|Tile welches mit den links stehenden Koordinaten auf ein gleich großes Quad gezeichnet wurde (Screenshot um Faktor 2×2 interpolationsfrei hochskaliert)]]Eine Lösung für dies, die oft genannt wird, ist, den Rahmen der Texturaddressierung in die mitte der Texel zu legen. Dazu addiert bzw. subtrahiert man von den Texturkoordinaten einen halben Texel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  u0 = (x0 + 0.5) / w&lt;br /&gt;
  u1 = (x1 - 0.5) / w&lt;br /&gt;
  v0 = (y0 + 0.5) / h&lt;br /&gt;
  v1 = (y1 - 0.5) / h&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann liegen die Ränder des angezeigten Quads genau auf der Texelmitte, es findet also keine Überblendung mit nebenanliegenden Tiles statt. Dieser Ansatz hat allerdings ein anderes Problem: Die Texturen verschwimmen schon bei einer 1:1 Abbildung, wie im Screenshot rechts zu sehen.&lt;br /&gt;
&lt;br /&gt;
== Lösung 2: Rahmen hinzufügen ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Texturatlas_bordered.png|frame|center|Tile mit Rahmen, welches mit den originalen Texturkoordinaten auf ein 4×4 größeres Quad gezeichnet wurde]]Man kann den ''bleeding''-Effekt auch beheben, indem man einen 1 px Rahmen um die Texturen im Atlas hinzufügt, welcher die Farbe des anliegenden Texturpixels hat (und in den Ecken eventuell eine lineare Überblendung). Obiges Bild demonstriert, dass dies das Problem löst.&lt;br /&gt;
&lt;br /&gt;
Allerdings hilft diese Lösung nicht, wenn man (automatisch generierte) Mipmaps verwendet. Dafür muss man den Rahmen für jedes Mipmap-Level verdoppeln, was ab einem gewissen Mipmap-Level zu viel Platz benötigt. Oft ist es allerdings so, dass man, wenn man Mipmaps braucht (also unterschiedliche Skalierungen einer Textur anzeigen will) sowieso keine pixelgenaue Darstellung benötigt.&lt;br /&gt;
&lt;br /&gt;
Ein weiterer Nachteil ist, dass man N×M+4 Pixel verschwendet, von denen nur die Hälfte verwendet werden.&lt;br /&gt;
&lt;br /&gt;
== Zusammenfassung ==&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}} width=&amp;quot;100%&amp;quot;&lt;br /&gt;
!Technik / Kriterium&lt;br /&gt;
!Kein ''bleeding''&lt;br /&gt;
!Pixelgenaue Darstellung bei 1:1 Rendering&lt;br /&gt;
!Mipmap-Kompatibilität&lt;br /&gt;
!Lineares Filtering bei Zoom&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left&amp;quot; |Normal mit GL_NEAREST&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|—&lt;br /&gt;
|✘&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left&amp;quot; |Normal mit GL_LINEAR (ggfs. + Mipmap)&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left&amp;quot; |Lösung 1: Ausschnitt verkleinern&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left&amp;quot; | Lösung 2: Rahmen hinzufügen&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Texelgenaue_Texturkoordinate&amp;diff=26234</id>
		<title>Texelgenaue Texturkoordinate</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Texelgenaue_Texturkoordinate&amp;diff=26234"/>
				<updated>2014-05-27T13:12:27Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: /* Lösung 2: Rahmen hinzufügen */ Overhead des Rahmens beschreiben&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Texelgenaue Texturkoordinate|Texelgenaue Texturkoordinaten]] werden immer dann gebraucht, wenn man mehrere Bilder in einer Textur hat, z.B. bei einer Tilemap oder wenn man zur Laufzeit einen dynamischen Texturatlas erzeugt.&lt;br /&gt;
&lt;br /&gt;
= Anwendungsgebiet =&lt;br /&gt;
&lt;br /&gt;
[[Datei:Beispiel_Texturatlas.png|thumb|256px|Beispiel eines Texturatlas. Unterschiedliche Texturen sind in einem Bild untergebracht.]]&lt;br /&gt;
&lt;br /&gt;
Ein häufiges Anwendungsgebiet ist wie schon erwähnt das Addressieren von Texturen in einem Texturatlas. Dazu muss man Pixelgenau die einzelnen Teilbilder herausschneiden, um sie auf Objekten anzubringen.&lt;br /&gt;
&lt;br /&gt;
Wenn der Ausschnitt die Pixel im Rechteck ''x0..x1'', ''y0..y1'' abdeckt, dann ist die intuitive Methode um die Texturkoordinaten ''u0,u1,v0,v1'' für eine Textur der Breite ''w'' und Höhe ''h'' zu erhalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  u0 = x0 / w&lt;br /&gt;
  u1 = x1 / w&lt;br /&gt;
  v0 = y0 / h&lt;br /&gt;
  v1 = y1 / h&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
&lt;br /&gt;
Um das zweite Tile von links in der untersten Zeile auszuwählen, müssen wir das Rechteck mit ''x0=64'', ''x1=128'', ''y0=192'', ''y1=256'' aus der Textur mit ''w=256'', ''h=256'' rausschneiden. Damit erhalten wir:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  u0 = x0 / w = 0.2500&lt;br /&gt;
  u1 = x1 / w = 0.5000&lt;br /&gt;
  v0 = y0 / h = 0.7500&lt;br /&gt;
  v1 = y1 / h = 1.0000&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Problematik =&lt;br /&gt;
&lt;br /&gt;
Diese Koordinaten bergen allerdings Probleme in sich, sobald man einen anderen Texturfilter als [[glTexParameter#Vergleich_zwischen_verschiedenen_Texturfilter|GL_NEAREST]] verwendet und die Texel nicht 1:1 auf Pixel übertragen werden (also irgendeine Form der Skalierung der Textur statt findet).&lt;br /&gt;
&lt;br /&gt;
[[Datei:Texturatlas_bleeding.png|frame|center|Ein Tile mit den obigen Texturkoordinaten auf ein 4×4 größeres Quad gezeichnet]] Dann kommt es zu ''bleeding''-Effekten, bei denen die nebenanliegenden Texturen in das gewollte Bild reinblenden. In dem Beispiel oben wurde das zweite Tile von links ganz unten (64 px×64 px) auf ein Quad welches mit 256 px×256 px gerendert wurde mit GL_LINEAR aufgebracht. Man kann deutlich erkennen wie die nebenanliegenden Tiles in das Tile hineinbleeden.&lt;br /&gt;
&lt;br /&gt;
== Lösung 1: Texturaddressierung verändern ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Texturatlas_offsetcoords.png|frame|Tile welches mit den links stehenden Koordinaten auf ein gleich großes Quad gezeichnet wurde (Screenshot um Faktor 2×2 interpolationsfrei hochskaliert)]]Eine Lösung für dies, die oft genannt wird, ist, den Rahmen der Texturaddressierung in die mitte der Texel zu legen. Dazu addiert bzw. subtrahiert man von den Texturkoordinaten einen halben Texel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  u0 = (x0 + 0.5) / w&lt;br /&gt;
  u1 = (x1 - 0.5) / w&lt;br /&gt;
  v0 = (y0 + 0.5) / h&lt;br /&gt;
  v1 = (y1 - 0.5) / h&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann liegen die Ränder des angezeigten Quads genau auf der Texelmitte, es findet also keine Überblendung mit nebenanliegenden Tiles statt. Dieser Ansatz hat allerdings ein anderes Problem: Die Texturen verschwimmen schon bei einer 1:1 Abbildung, wie im Screenshot rechts zu sehen.&lt;br /&gt;
&lt;br /&gt;
== Lösung 2: Rahmen hinzufügen ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Texturatlas_bordered.png|frame|center|Tile mit Rahmen, welches mit den originalen Texturkoordinaten auf ein 4×4 größeres Quad gezeichnet wurde]]Man kann den ''bleeding''-Effekt auch beheben, indem man einen 1 px Rahmen um die Texturen im Atlas hinzufügt, welcher die Farbe des anliegenden Texturpixels hat (und in den Ecken eventuell eine lineare Überblendung). Obiges Bild demonstriert, dass dies das Problem löst.&lt;br /&gt;
&lt;br /&gt;
Allerdings hilft diese Lösung nicht, wenn man (automatisch generierte) Mipmaps verwendet. Dafür muss man den Rahmen für jedes Mipmap-Level verdoppeln, was ab einem gewissen Mipmap-Level zu viel Platz benötigt. Oft ist es allerdings so, dass man, wenn man Mipmaps braucht (also unterschiedliche Skalierungen einer Textur anzeigen will) sowieso keine pixelgenaue Darstellung benötigt.&lt;br /&gt;
&lt;br /&gt;
Ein weiterer Nachteil ist, dass man N×M+4 Pixel verschwendet, von denen nur die Hälfte verwendet werden.&lt;br /&gt;
&lt;br /&gt;
== Zusammenfassung ==&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}} width=&amp;quot;100%&amp;quot;&lt;br /&gt;
!Technik / Kriterium&lt;br /&gt;
!Kein ''bleeding''&lt;br /&gt;
!Pixelgenaue Darstellung bei 1:1 Rendering&lt;br /&gt;
!Mipmap-Kompatibilität&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left&amp;quot; |Normal&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left&amp;quot; |Lösung 1: Ausschnitt verkleinern&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left&amp;quot; | Lösung 2: Rahmen hinzufügen&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Texelgenaue_Texturkoordinate&amp;diff=26233</id>
		<title>Texelgenaue Texturkoordinate</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Texelgenaue_Texturkoordinate&amp;diff=26233"/>
				<updated>2014-05-27T13:09:14Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: Beispiel für Texturkoordinaten hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Texelgenaue Texturkoordinate|Texelgenaue Texturkoordinaten]] werden immer dann gebraucht, wenn man mehrere Bilder in einer Textur hat, z.B. bei einer Tilemap oder wenn man zur Laufzeit einen dynamischen Texturatlas erzeugt.&lt;br /&gt;
&lt;br /&gt;
= Anwendungsgebiet =&lt;br /&gt;
&lt;br /&gt;
[[Datei:Beispiel_Texturatlas.png|thumb|256px|Beispiel eines Texturatlas. Unterschiedliche Texturen sind in einem Bild untergebracht.]]&lt;br /&gt;
&lt;br /&gt;
Ein häufiges Anwendungsgebiet ist wie schon erwähnt das Addressieren von Texturen in einem Texturatlas. Dazu muss man Pixelgenau die einzelnen Teilbilder herausschneiden, um sie auf Objekten anzubringen.&lt;br /&gt;
&lt;br /&gt;
Wenn der Ausschnitt die Pixel im Rechteck ''x0..x1'', ''y0..y1'' abdeckt, dann ist die intuitive Methode um die Texturkoordinaten ''u0,u1,v0,v1'' für eine Textur der Breite ''w'' und Höhe ''h'' zu erhalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  u0 = x0 / w&lt;br /&gt;
  u1 = x1 / w&lt;br /&gt;
  v0 = y0 / h&lt;br /&gt;
  v1 = y1 / h&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
&lt;br /&gt;
Um das zweite Tile von links in der untersten Zeile auszuwählen, müssen wir das Rechteck mit ''x0=64'', ''x1=128'', ''y0=192'', ''y1=256'' aus der Textur mit ''w=256'', ''h=256'' rausschneiden. Damit erhalten wir:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  u0 = x0 / w = 0.2500&lt;br /&gt;
  u1 = x1 / w = 0.5000&lt;br /&gt;
  v0 = y0 / h = 0.7500&lt;br /&gt;
  v1 = y1 / h = 1.0000&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Problematik =&lt;br /&gt;
&lt;br /&gt;
Diese Koordinaten bergen allerdings Probleme in sich, sobald man einen anderen Texturfilter als [[glTexParameter#Vergleich_zwischen_verschiedenen_Texturfilter|GL_NEAREST]] verwendet und die Texel nicht 1:1 auf Pixel übertragen werden (also irgendeine Form der Skalierung der Textur statt findet).&lt;br /&gt;
&lt;br /&gt;
[[Datei:Texturatlas_bleeding.png|frame|center|Ein Tile mit den obigen Texturkoordinaten auf ein 4×4 größeres Quad gezeichnet]] Dann kommt es zu ''bleeding''-Effekten, bei denen die nebenanliegenden Texturen in das gewollte Bild reinblenden. In dem Beispiel oben wurde das zweite Tile von links ganz unten (64 px×64 px) auf ein Quad welches mit 256 px×256 px gerendert wurde mit GL_LINEAR aufgebracht. Man kann deutlich erkennen wie die nebenanliegenden Tiles in das Tile hineinbleeden.&lt;br /&gt;
&lt;br /&gt;
== Lösung 1: Texturaddressierung verändern ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Texturatlas_offsetcoords.png|frame|Tile welches mit den links stehenden Koordinaten auf ein gleich großes Quad gezeichnet wurde (Screenshot um Faktor 2×2 interpolationsfrei hochskaliert)]]Eine Lösung für dies, die oft genannt wird, ist, den Rahmen der Texturaddressierung in die mitte der Texel zu legen. Dazu addiert bzw. subtrahiert man von den Texturkoordinaten einen halben Texel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  u0 = (x0 + 0.5) / w&lt;br /&gt;
  u1 = (x1 - 0.5) / w&lt;br /&gt;
  v0 = (y0 + 0.5) / h&lt;br /&gt;
  v1 = (y1 - 0.5) / h&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann liegen die Ränder des angezeigten Quads genau auf der Texelmitte, es findet also keine Überblendung mit nebenanliegenden Tiles statt. Dieser Ansatz hat allerdings ein anderes Problem: Die Texturen verschwimmen schon bei einer 1:1 Abbildung, wie im Screenshot rechts zu sehen.&lt;br /&gt;
&lt;br /&gt;
== Lösung 2: Rahmen hinzufügen ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Texturatlas_bordered.png|frame|center|Tile mit Rahmen, welches mit den originalen Texturkoordinaten auf ein 4×4 größeres Quad gezeichnet wurde]]Man kann den ''bleeding''-Effekt auch beheben, indem man einen 1 px Rahmen um die Texturen im Atlas hinzufügt, welcher die Farbe des anliegenden Texturpixels hat (und in den Ecken eventuell eine lineare Überblendung). Obiges Bild demonstriert, dass dies das Problem löst.&lt;br /&gt;
&lt;br /&gt;
Allerdings hilft diese Lösung nicht, wenn man (automatisch generierte) Mipmaps verwendet. Dafür muss man den Rahmen für jedes Mipmap-Level verdoppeln, was ab einem gewissen Mipmap-Level zu viel Platz benötigt. Oft ist es allerdings so, dass man, wenn man Mipmaps braucht (also unterschiedliche Skalierungen einer Textur anzeigen will) sowieso keine pixelgenaue Darstellung benötigt.&lt;br /&gt;
&lt;br /&gt;
== Zusammenfassung ==&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}} width=&amp;quot;100%&amp;quot;&lt;br /&gt;
!Technik / Kriterium&lt;br /&gt;
!Kein ''bleeding''&lt;br /&gt;
!Pixelgenaue Darstellung bei 1:1 Rendering&lt;br /&gt;
!Mipmap-Kompatibilität&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left&amp;quot; |Normal&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left&amp;quot; |Lösung 1: Ausschnitt verkleinern&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left&amp;quot; | Lösung 2: Rahmen hinzufügen&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Texelgenaue_Texturkoordinate&amp;diff=26232</id>
		<title>Texelgenaue Texturkoordinate</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Texelgenaue_Texturkoordinate&amp;diff=26232"/>
				<updated>2014-05-27T13:04:14Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: Tabellenmarkup verbessert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Texelgenaue Texturkoordinate|Texelgenaue Texturkoordinaten]] werden immer dann gebraucht, wenn man mehrere Bilder in einer Textur hat, z.B. bei einer Tilemap oder wenn man zur Laufzeit einen dynamischen Texturatlas erzeugt.&lt;br /&gt;
&lt;br /&gt;
= Anwendungsgebiet =&lt;br /&gt;
&lt;br /&gt;
[[Datei:Beispiel_Texturatlas.png|thumb|256px|Beispiel eines Texturatlas. Unterschiedliche Texturen sind in einem Bild untergebracht.]]&lt;br /&gt;
&lt;br /&gt;
Ein häufiges Anwendungsgebiet ist wie schon erwähnt das Addressieren von Texturen in einem Texturatlas. Dazu muss man Pixelgenau die einzelnen Teilbilder herausschneiden, um sie auf Objekten anzubringen.&lt;br /&gt;
&lt;br /&gt;
Wenn der Ausschnitt die Pixel im Rechteck ''x0..x1'', ''y0..y1'' abdeckt, dann ist die intuitive Methode um die Texturkoordinaten ''u0,u1,v0,v1'' für eine Textur der Breite ''w'' und Höhe ''h'' zu erhalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  u0 = x0 / w&lt;br /&gt;
  u1 = x1 / w&lt;br /&gt;
  v0 = y0 / h&lt;br /&gt;
  v1 = y1 / h&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Problematik =&lt;br /&gt;
&lt;br /&gt;
Diese Koordinaten bergen allerdings Probleme in sich, sobald man einen anderen Texturfilter als [[glTexParameter#Vergleich_zwischen_verschiedenen_Texturfilter|GL_NEAREST]] verwendet und die Texel nicht 1:1 auf Pixel übertragen werden (also irgendeine Form der Skalierung der Textur statt findet).&lt;br /&gt;
&lt;br /&gt;
[[Datei:Texturatlas_bleeding.png|frame|center|Ein Tile mit den obigen Texturkoordinaten auf ein 4×4 größeres Quad gezeichnet]] Dann kommt es zu ''bleeding''-Effekten, bei denen die nebenanliegenden Texturen in das gewollte Bild reinblenden. In dem Beispiel oben wurde das zweite Tile von links ganz unten (64 px×64 px) auf ein Quad welches mit 256 px×256 px gerendert wurde mit GL_LINEAR aufgebracht. Man kann deutlich erkennen wie die nebenanliegenden Tiles in das Tile hineinbleeden.&lt;br /&gt;
&lt;br /&gt;
== Lösung 1: Texturaddressierung verändern ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Texturatlas_offsetcoords.png|frame|Tile welches mit den links stehenden Koordinaten auf ein gleich großes Quad gezeichnet wurde (Screenshot um Faktor 2×2 interpolationsfrei hochskaliert)]]Eine Lösung für dies, die oft genannt wird, ist, den Rahmen der Texturaddressierung in die mitte der Texel zu legen. Dazu addiert bzw. subtrahiert man von den Texturkoordinaten einen halben Texel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  u0 = (x0 + 0.5) / w&lt;br /&gt;
  u1 = (x1 - 0.5) / w&lt;br /&gt;
  v0 = (y0 + 0.5) / h&lt;br /&gt;
  v1 = (y1 - 0.5) / h&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann liegen die Ränder des angezeigten Quads genau auf der Texelmitte, es findet also keine Überblendung mit nebenanliegenden Tiles statt. Dieser Ansatz hat allerdings ein anderes Problem: Die Texturen verschwimmen schon bei einer 1:1 Abbildung, wie im Screenshot rechts zu sehen.&lt;br /&gt;
&lt;br /&gt;
== Lösung 2: Rahmen hinzufügen ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Texturatlas_bordered.png|frame|center|Tile mit Rahmen, welches mit den originalen Texturkoordinaten auf ein 4×4 größeres Quad gezeichnet wurde]]Man kann den ''bleeding''-Effekt auch beheben, indem man einen 1 px Rahmen um die Texturen im Atlas hinzufügt, welcher die Farbe des anliegenden Texturpixels hat (und in den Ecken eventuell eine lineare Überblendung). Obiges Bild demonstriert, dass dies das Problem löst.&lt;br /&gt;
&lt;br /&gt;
Allerdings hilft diese Lösung nicht, wenn man (automatisch generierte) Mipmaps verwendet. Dafür muss man den Rahmen für jedes Mipmap-Level verdoppeln, was ab einem gewissen Mipmap-Level zu viel Platz benötigt. Oft ist es allerdings so, dass man, wenn man Mipmaps braucht (also unterschiedliche Skalierungen einer Textur anzeigen will) sowieso keine pixelgenaue Darstellung benötigt.&lt;br /&gt;
&lt;br /&gt;
== Zusammenfassung ==&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}} width=&amp;quot;100%&amp;quot;&lt;br /&gt;
!Technik / Kriterium&lt;br /&gt;
!Kein ''bleeding''&lt;br /&gt;
!Pixelgenaue Darstellung bei 1:1 Rendering&lt;br /&gt;
!Mipmap-Kompatibilität&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left&amp;quot; |Normal&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left&amp;quot; |Lösung 1: Ausschnitt verkleinern&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left&amp;quot; | Lösung 2: Rahmen hinzufügen&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Texelgenaue_Texturkoordinate&amp;diff=26231</id>
		<title>Texelgenaue Texturkoordinate</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Texelgenaue_Texturkoordinate&amp;diff=26231"/>
				<updated>2014-05-27T13:02:45Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: Überschriften-Markup repariert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Texelgenaue Texturkoordinate|Texelgenaue Texturkoordinaten]] werden immer dann gebraucht, wenn man mehrere Bilder in einer Textur hat, z.B. bei einer Tilemap oder wenn man zur Laufzeit einen dynamischen Texturatlas erzeugt.&lt;br /&gt;
&lt;br /&gt;
= Anwendungsgebiet =&lt;br /&gt;
&lt;br /&gt;
[[Datei:Beispiel_Texturatlas.png|thumb|256px|Beispiel eines Texturatlas. Unterschiedliche Texturen sind in einem Bild untergebracht.]]&lt;br /&gt;
&lt;br /&gt;
Ein häufiges Anwendungsgebiet ist wie schon erwähnt das Addressieren von Texturen in einem Texturatlas. Dazu muss man Pixelgenau die einzelnen Teilbilder herausschneiden, um sie auf Objekten anzubringen.&lt;br /&gt;
&lt;br /&gt;
Wenn der Ausschnitt die Pixel im Rechteck ''x0..x1'', ''y0..y1'' abdeckt, dann ist die intuitive Methode um die Texturkoordinaten ''u0,u1,v0,v1'' für eine Textur der Breite ''w'' und Höhe ''h'' zu erhalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  u0 = x0 / w&lt;br /&gt;
  u1 = x1 / w&lt;br /&gt;
  v0 = y0 / h&lt;br /&gt;
  v1 = y1 / h&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Problematik =&lt;br /&gt;
&lt;br /&gt;
Diese Koordinaten bergen allerdings Probleme in sich, sobald man einen anderen Texturfilter als [[glTexParameter#Vergleich_zwischen_verschiedenen_Texturfilter|GL_NEAREST]] verwendet und die Texel nicht 1:1 auf Pixel übertragen werden (also irgendeine Form der Skalierung der Textur statt findet).&lt;br /&gt;
&lt;br /&gt;
[[Datei:Texturatlas_bleeding.png|frame|center|Ein Tile mit den obigen Texturkoordinaten auf ein 4×4 größeres Quad gezeichnet]] Dann kommt es zu ''bleeding''-Effekten, bei denen die nebenanliegenden Texturen in das gewollte Bild reinblenden. In dem Beispiel oben wurde das zweite Tile von links ganz unten (64 px×64 px) auf ein Quad welches mit 256 px×256 px gerendert wurde mit GL_LINEAR aufgebracht. Man kann deutlich erkennen wie die nebenanliegenden Tiles in das Tile hineinbleeden.&lt;br /&gt;
&lt;br /&gt;
== Lösung 1: Texturaddressierung verändern ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Texturatlas_offsetcoords.png|frame|Tile welches mit den links stehenden Koordinaten auf ein gleich großes Quad gezeichnet wurde (Screenshot um Faktor 2×2 interpolationsfrei hochskaliert)]]Eine Lösung für dies, die oft genannt wird, ist, den Rahmen der Texturaddressierung in die mitte der Texel zu legen. Dazu addiert bzw. subtrahiert man von den Texturkoordinaten einen halben Texel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  u0 = (x0 + 0.5) / w&lt;br /&gt;
  u1 = (x1 - 0.5) / w&lt;br /&gt;
  v0 = (y0 + 0.5) / h&lt;br /&gt;
  v1 = (y1 - 0.5) / h&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann liegen die Ränder des angezeigten Quads genau auf der Texelmitte, es findet also keine Überblendung mit nebenanliegenden Tiles statt. Dieser Ansatz hat allerdings ein anderes Problem: Die Texturen verschwimmen schon bei einer 1:1 Abbildung, wie im Screenshot rechts zu sehen.&lt;br /&gt;
&lt;br /&gt;
== Lösung 2: Rahmen hinzufügen ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Texturatlas_bordered.png|frame|center|Tile mit Rahmen, welches mit den originalen Texturkoordinaten auf ein 4×4 größeres Quad gezeichnet wurde]]Man kann den ''bleeding''-Effekt auch beheben, indem man einen 1 px Rahmen um die Texturen im Atlas hinzufügt, welcher die Farbe des anliegenden Texturpixels hat (und in den Ecken eventuell eine lineare Überblendung). Obiges Bild demonstriert, dass dies das Problem löst.&lt;br /&gt;
&lt;br /&gt;
Allerdings hilft diese Lösung nicht, wenn man (automatisch generierte) Mipmaps verwendet. Dafür muss man den Rahmen für jedes Mipmap-Level verdoppeln, was ab einem gewissen Mipmap-Level zu viel Platz benötigt. Oft ist es allerdings so, dass man, wenn man Mipmaps braucht (also unterschiedliche Skalierungen einer Textur anzeigen will) sowieso keine pixelgenaue Darstellung benötigt.&lt;br /&gt;
&lt;br /&gt;
== Zusammenfassung ==&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}} width=&amp;quot;100%&amp;quot;&lt;br /&gt;
!Kriterium&lt;br /&gt;
!Kein ''bleeding''&lt;br /&gt;
!Pixelgenaue Darstellung bei 1:1 Rendering&lt;br /&gt;
!Mipmap-Kompatibilität&lt;br /&gt;
|-&lt;br /&gt;
|Normal&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|-&lt;br /&gt;
|Lösung 1: Ausschnitt verkleinern&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|-&lt;br /&gt;
|Lösung 2: Rahmen hinzufügen&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Texelgenaue_Texturkoordinate&amp;diff=26230</id>
		<title>Texelgenaue Texturkoordinate</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Texelgenaue_Texturkoordinate&amp;diff=26230"/>
				<updated>2014-05-27T13:00:42Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: Die Seite wurde neu angelegt: „Texelgenaue Texturkoordinaten werden immer dann gebraucht, wenn man mehrere Bilder in einer Textur hat, z.B. bei einer Tilemap…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Texelgenaue Texturkoordinate|Texelgenaue Texturkoordinaten]] werden immer dann gebraucht, wenn man mehrere Bilder in einer Textur hat, z.B. bei einer Tilemap oder wenn man zur Laufzeit einen dynamischen Texturatlas erzeugt.&lt;br /&gt;
&lt;br /&gt;
=== Anwendungsgebiet ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Beispiel_Texturatlas.png|thumb|256px|Beispiel eines Texturatlas. Unterschiedliche Texturen sind in einem Bild untergebracht.]]&lt;br /&gt;
&lt;br /&gt;
Ein häufiges Anwendungsgebiet ist wie schon erwähnt das Addressieren von Texturen in einem Texturatlas. Dazu muss man Pixelgenau die einzelnen Teilbilder herausschneiden, um sie auf Objekten anzubringen.&lt;br /&gt;
&lt;br /&gt;
Wenn der Ausschnitt die Pixel im Rechteck ''x0..x1'', ''y0..y1'' abdeckt, dann ist die intuitive Methode um die Texturkoordinaten ''u0,u1,v0,v1'' für eine Textur der Breite ''w'' und Höhe ''h'' zu erhalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  u0 = x0 / w&lt;br /&gt;
  u1 = x1 / w&lt;br /&gt;
  v0 = y0 / h&lt;br /&gt;
  v1 = y1 / h&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Problematik === &lt;br /&gt;
&lt;br /&gt;
Diese Koordinaten bergen allerdings Probleme in sich, sobald man einen anderen Texturfilter als [[glTexParameter#Vergleich_zwischen_verschiedenen_Texturfilter|GL_NEAREST]] verwendet und die Texel nicht 1:1 auf Pixel übertragen werden (also irgendeine Form der Skalierung der Textur statt findet).&lt;br /&gt;
&lt;br /&gt;
[[Datei:Texturatlas_bleeding.png|frame|center|Ein Tile mit den obigen Texturkoordinaten auf ein 4×4 größeres Quad gezeichnet]] Dann kommt es zu ''bleeding''-Effekten, bei denen die nebenanliegenden Texturen in das gewollte Bild reinblenden. In dem Beispiel oben wurde das zweite Tile von links ganz unten (64 px×64 px) auf ein Quad welches mit 256 px×256 px gerendert wurde mit GL_LINEAR aufgebracht. Man kann deutlich erkennen wie die nebenanliegenden Tiles in das Tile hineinbleeden.&lt;br /&gt;
&lt;br /&gt;
== Lösung 1: Texturaddressierung verändern ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Texturatlas_offsetcoords.png|frame|Tile welches mit den links stehenden Koordinaten auf ein gleich großes Quad gezeichnet wurde (Screenshot um Faktor 2×2 interpolationsfrei hochskaliert)]]Eine Lösung für dies, die oft genannt wird, ist, den Rahmen der Texturaddressierung in die mitte der Texel zu legen. Dazu addiert bzw. subtrahiert man von den Texturkoordinaten einen halben Texel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  u0 = (x0 + 0.5) / w&lt;br /&gt;
  u1 = (x1 - 0.5) / w&lt;br /&gt;
  v0 = (y0 + 0.5) / h&lt;br /&gt;
  v1 = (y1 - 0.5) / h&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann liegen die Ränder des angezeigten Quads genau auf der Texelmitte, es findet also keine Überblendung mit nebenanliegenden Tiles statt. Dieser Ansatz hat allerdings ein anderes Problem: Die Texturen verschwimmen schon bei einer 1:1 Abbildung, wie im Screenshot rechts zu sehen.&lt;br /&gt;
&lt;br /&gt;
== Lösung 2: Rahmen hinzufügen ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Texturatlas_bordered.png|frame|center|Tile mit Rahmen, welches mit den originalen Texturkoordinaten auf ein 4×4 größeres Quad gezeichnet wurde]]Man kann den ''bleeding''-Effekt auch beheben, indem man einen 1 px Rahmen um die Texturen im Atlas hinzufügt, welcher die Farbe des anliegenden Texturpixels hat (und in den Ecken eventuell eine lineare Überblendung). Obiges Bild demonstriert, dass dies das Problem löst.&lt;br /&gt;
&lt;br /&gt;
Allerdings hilft diese Lösung nicht, wenn man (automatisch generierte) Mipmaps verwendet. Dafür muss man den Rahmen für jedes Mipmap-Level verdoppeln, was ab einem gewissen Mipmap-Level zu viel Platz benötigt. Oft ist es allerdings so, dass man, wenn man Mipmaps braucht (also unterschiedliche Skalierungen einer Textur anzeigen will) sowieso keine pixelgenaue Darstellung benötigt.&lt;br /&gt;
&lt;br /&gt;
== Zusammenfassung ==&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}} width=&amp;quot;100%&amp;quot;&lt;br /&gt;
!Kriterium&lt;br /&gt;
!Kein ''bleeding''&lt;br /&gt;
!Pixelgenaue Darstellung bei 1:1 Rendering&lt;br /&gt;
!Mipmap-Kompatibilität&lt;br /&gt;
|-&lt;br /&gt;
|Normal&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|-&lt;br /&gt;
|Lösung 1: Ausschnitt verkleinern&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|-&lt;br /&gt;
|Lösung 2: Rahmen hinzufügen&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Datei:Texturatlas_bordered.png&amp;diff=26229</id>
		<title>Datei:Texturatlas bordered.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Datei:Texturatlas_bordered.png&amp;diff=26229"/>
				<updated>2014-05-27T12:54:14Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: Beispiel um Lösung mit Rahmen um die Teiltexturen bei Texturatlanten wie :Datei:Beispiel_Texturatlas.png zu demonstrieren.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beispiel um Lösung mit Rahmen um die Teiltexturen bei Texturatlanten wie [[:Datei:Beispiel_Texturatlas.png]] zu demonstrieren.&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Datei:Texturatlas_bleeding.png&amp;diff=26228</id>
		<title>Datei:Texturatlas bleeding.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Datei:Texturatlas_bleeding.png&amp;diff=26228"/>
				<updated>2014-05-27T12:53:24Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: Link repariert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Zeigt das Bleeding bei linearer Interpolation einem Texturatlas wie in [[:Datei:Beispiel_Texturatlas.png]].&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Datei:Texturatlas_offsetcoords.png&amp;diff=26227</id>
		<title>Datei:Texturatlas offsetcoords.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Datei:Texturatlas_offsetcoords.png&amp;diff=26227"/>
				<updated>2014-05-27T12:53:01Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: Link repariert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beispiel um Problem mit verschobenen Koordinaten bei Texturatlanten wie [[:Datei:Beispiel_Texturatlas.png]] zu demonstrieren.&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Datei:Texturatlas_offsetcoords.png&amp;diff=26226</id>
		<title>Datei:Texturatlas offsetcoords.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Datei:Texturatlas_offsetcoords.png&amp;diff=26226"/>
				<updated>2014-05-27T12:47:54Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: Lord horazont lud eine neue Version von „Datei:Texturatlas offsetcoords.png“ hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beispiel um Problem mit verschobenen Koordinaten bei Texturatlanten wie [[Datei:Beispiel_Texturatlas.png]] zu demonstrieren.&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Datei:Texturatlas_offsetcoords.png&amp;diff=26225</id>
		<title>Datei:Texturatlas offsetcoords.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Datei:Texturatlas_offsetcoords.png&amp;diff=26225"/>
				<updated>2014-05-27T12:37:00Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: Beispiel um Problem mit verschobenen Koordinaten bei Texturatlanten wie Datei:Beispiel_Texturatlas.png zu demonstrieren.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beispiel um Problem mit verschobenen Koordinaten bei Texturatlanten wie [[Datei:Beispiel_Texturatlas.png]] zu demonstrieren.&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Datei:Texturatlas_bleeding.png&amp;diff=26224</id>
		<title>Datei:Texturatlas bleeding.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Datei:Texturatlas_bleeding.png&amp;diff=26224"/>
				<updated>2014-05-27T12:36:19Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: Zeigt das Bleeding bei linearer Interpolation einem Texturatlas wie in Datei:Beispiel_Texturatlas.png.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Zeigt das Bleeding bei linearer Interpolation einem Texturatlas wie in [[Datei:Beispiel_Texturatlas.png]].&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Datei:Beispiel_Texturatlas.png&amp;diff=26223</id>
		<title>Datei:Beispiel Texturatlas.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Datei:Beispiel_Texturatlas.png&amp;diff=26223"/>
				<updated>2014-05-27T12:35:30Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: Lord horazont lud eine neue Version von „Datei:Beispiel Texturatlas.png“ hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Selbst hergestellt aus Blender Renderings. Verwendbar unter der [https://creativecommons.org/licenses/by-nc-sa/4.0/ CC-BY-NC-SA] Lizenz.&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Datei:Beispiel_Texturatlas.png&amp;diff=26222</id>
		<title>Datei:Beispiel Texturatlas.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Datei:Beispiel_Texturatlas.png&amp;diff=26222"/>
				<updated>2014-05-27T12:25:13Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: Lord horazont lud eine neue Version von „Datei:Beispiel Texturatlas.png“ hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Selbst hergestellt aus Blender Renderings. Verwendbar unter der [https://creativecommons.org/licenses/by-nc-sa/4.0/ CC-BY-NC-SA] Lizenz.&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Datei:Beispiel_Texturatlas.png&amp;diff=26221</id>
		<title>Datei:Beispiel Texturatlas.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Datei:Beispiel_Texturatlas.png&amp;diff=26221"/>
				<updated>2014-05-27T12:16:40Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: Lizenzlink repariert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Selbst hergestellt aus Blender Renderings. Verwendbar unter der [https://creativecommons.org/licenses/by-nc-sa/4.0/ CC-BY-NC-SA] Lizenz.&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Datei:Beispiel_Texturatlas.png&amp;diff=26220</id>
		<title>Datei:Beispiel Texturatlas.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Datei:Beispiel_Texturatlas.png&amp;diff=26220"/>
				<updated>2014-05-27T12:15:48Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: Selbst hergestellt aus Blender Renderings. Verwendbar unter CC-BY-NC-SA&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Selbst hergestellt aus Blender Renderings. Verwendbar unter [[https://creativecommons.org/licenses/by-nc-sa/4.0/|CC-BY-NC-SA]]&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Hilfe:Bearbeiten&amp;diff=25867</id>
		<title>Hilfe:Bearbeiten</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Hilfe:Bearbeiten&amp;diff=25867"/>
				<updated>2013-10-12T17:03:59Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: Weiterleitung auf Hilfe:Bearbeitungshilfe erstellt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Hilfe:Bearbeitungshilfe]]&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=DGL_Treffen/2013/Organisation&amp;diff=25857</id>
		<title>DGL Treffen/2013/Organisation</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=DGL_Treffen/2013/Organisation&amp;diff=25857"/>
				<updated>2013-09-28T09:58:34Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: /* Wer kommt mit? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Es wurde einmal mehr vorgeschlagen sich im Sommer zu treffen. Ort ist diesmal bei Kassel.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos und detaillierte Besprechungen finden in [http://delphigl.com/forum/viewtopic.php?f=4&amp;amp;t=10746 diesem Forenthread] statt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Wo?==&lt;br /&gt;
'''Kassel'''&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.fewo-direkt.de/ferienwohnung-ferienhaus/p549290 Ferienwohnungen], &amp;lt;br&amp;gt;&lt;br /&gt;
Im Teich 5 &amp;lt;br/&amp;gt;&lt;br /&gt;
34314 Espenau&lt;br /&gt;
&lt;br /&gt;
==Wann?==&lt;br /&gt;
*Anreise: Sa 28.09.2013&lt;br /&gt;
*Abreise: Mo 07.10.2013&lt;br /&gt;
&lt;br /&gt;
==Was kostet das?==&lt;br /&gt;
Für die Übernachter ca 20Eur pro Nacht plus Nahrung.&lt;br /&gt;
Für Ausflüge, Museen etc in Kassel ca. 20-30Eur&lt;br /&gt;
Die Anreise ist, wie üblich, von den Teilnehmern zu tragen. Allerdings versuchen wir natürlich beides zu optimieren d.h. Fahrgemeinschaften auf den Fahrten und Gemeinschaftskasse bei der Verpflegung.&lt;br /&gt;
&lt;br /&gt;
==Wer kommt mit?==&lt;br /&gt;
Hier eine vorläufige Teilnehmerliste. Anzahl Betten und Schlafzimmer noch offen.&lt;br /&gt;
{|{{Prettytable_B1}}&lt;br /&gt;
!Teilnehmer&lt;br /&gt;
!Fest&lt;br /&gt;
!Bezahlt&lt;br /&gt;
!Tage&lt;br /&gt;
(10=max)&lt;br /&gt;
!Anreise&lt;br /&gt;
!Kommentar&lt;br /&gt;
|-&lt;br /&gt;
|Flash&lt;br /&gt;
|X&lt;br /&gt;
|&lt;br /&gt;
|10 (späte Anreise)&lt;br /&gt;
|PKW ab München &lt;br /&gt;
|(3 Plätze im PKW frei.)&lt;br /&gt;
|-&lt;br /&gt;
|i0n0s&lt;br /&gt;
|X&lt;br /&gt;
|&lt;br /&gt;
|10&lt;br /&gt;
|PKW ab Gießen&lt;br /&gt;
|(1 Platz im PKW frei.)&lt;br /&gt;
|-&lt;br /&gt;
|Phobeus&lt;br /&gt;
|x&lt;br /&gt;
|&lt;br /&gt;
|10&lt;br /&gt;
|PKW ab Hamburg&lt;br /&gt;
|(1 Platz im PKW frei.)&lt;br /&gt;
|-&lt;br /&gt;
|Lord Horazont&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|3 (4.10.–6.10.)&lt;br /&gt;
|Zug oder so&lt;br /&gt;
|—&lt;br /&gt;
|-&lt;br /&gt;
|''frei''&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Knittel&lt;br /&gt;
|X&lt;br /&gt;
|&lt;br /&gt;
|3 (28. - 1.)&lt;br /&gt;
|PKW ab Frankfurt&lt;br /&gt;
|3 Plätze frei&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|Gäste (ohne Übernachtung)&lt;br /&gt;
|-&lt;br /&gt;
|''frei''&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|''frei''&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|''frei''&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Wie kommt man hin?==&lt;br /&gt;
Auto oder Bahn.&lt;br /&gt;
&lt;br /&gt;
== Sonstiges Organisatorisches ==&lt;br /&gt;
In jedem Fall sollte jeder Mitfahrer eigenständig Kontakt mit mindestens seinem Fahrer aufnehmen und die genaue Anreise klären. Handynummer können an Phobeus geschickt werden. Jeder der seine Nummer preisgibt, erhält die Nummern der jeweilig Anderen. Sofern also niemand damit bedenken hat, sollte davon gebrauch machen. Das letzte Mal hatten lediglich die Fahrer die Nummern untereinander, was unglücklich ist, da gerade diese am Steuer sitzen ;)&lt;br /&gt;
&lt;br /&gt;
==Was muss man mitbringen?==&lt;br /&gt;
===1x für Alle===&lt;br /&gt;
* Küchenequipement (Gewürze, Dosenöffner/Korkenzieher/Flaschenöffner, Kaffeefilter, Geschirrtücher, Wischtücher, Küchenrolle, Spülmittel)&lt;br /&gt;
* Klopapier&lt;br /&gt;
* 1 Router&lt;br /&gt;
* Netzwerkkabel (1x für alle? Ich weiß ja net... *g*)&lt;br /&gt;
* Was W-Lan Router mäßiges wäre suuuuper! Ist aber kein muss&lt;br /&gt;
* Cocktail Zeug!&lt;br /&gt;
&lt;br /&gt;
===Jeder===&lt;br /&gt;
* Das [[DGL Shirt]] - wer eins hat!&lt;br /&gt;
* Bargeld (Kaution (siehe Forum) + Reisekasse)&lt;br /&gt;
* Bettwäsche!&lt;br /&gt;
* Handtücher!&lt;br /&gt;
* Wechsel-Kleidung (Waschmaschine ist vorhanden)&lt;br /&gt;
* Nahrungsmittel (Es wird aber auch zentral, vor Grenzübertritt, eingekauft)&lt;br /&gt;
* Reisedokumente (Führerschein, Personalausweis, Versicherungs und Geldkarten)&lt;br /&gt;
* Reiseapotheke&lt;br /&gt;
* Hygieneartikel&lt;br /&gt;
* Badesachen!&lt;br /&gt;
* Elektronik (Laptop, Fotoapparat, Tanzmatten, MEHRFACHSTECKDOSEN!)&lt;br /&gt;
* Sonstiges (was zu lesen, Schreibzeug etc.) &lt;br /&gt;
''zu klären''&lt;br /&gt;
&lt;br /&gt;
==Was gibts zu erleben?==&lt;br /&gt;
*DGLer in echt ;)&lt;br /&gt;
*Grillen&lt;br /&gt;
*Eine Minni-LAN&lt;br /&gt;
*Videoabende&lt;br /&gt;
*Live Projektvorstellung&lt;br /&gt;
*Umgebung erkunden&lt;br /&gt;
&lt;br /&gt;
==Nahrungsmittel==&lt;br /&gt;
Was muss für Sonntag usw besorgt werden (macht Flash):&lt;br /&gt;
- Cocktailzeug &amp;amp; Crushed Ice (Flash &amp;amp; i0n0s)&lt;br /&gt;
- Knabberzeug (Knittel)&lt;br /&gt;
- ''Abendessen???''&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=glTexSubImage2D&amp;diff=25746</id>
		<title>glTexSubImage2D</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=glTexSubImage2D&amp;diff=25746"/>
				<updated>2013-03-05T15:32:56Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: /* Parameter */ Falsche Beschreibung von pixels repariert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= glTexSubImage2D =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Name ==&lt;br /&gt;
'''glTexSubImage2D''' - Legt ein zweidimensionales Subimage fest.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Delphi-Spezifikation ==&lt;br /&gt;
&lt;br /&gt;
 procedure '''glTexSubImage2D'''(''target'' : GLenum;&lt;br /&gt;
                           ''level'' : GLint;&lt;br /&gt;
                           ''xoffset'' : GLint; ''yoffset'' : GLint;&lt;br /&gt;
                           ''width'' : GLsizei; ''height'' : GLsizei;&lt;br /&gt;
                           ''format'' : GLenum;  ''type'' : GLenum;&lt;br /&gt;
                           ''pixels'' : '''const''' ^GLvoid)&lt;br /&gt;
&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;
! ''target'' &lt;br /&gt;
| Gibt die Zieltextur an. Muss '''GL_TEXTURE_2D''' sein.&lt;br /&gt;
|-&lt;br /&gt;
! ''level'' &lt;br /&gt;
| Gibt die [[LOD]]-Nummer an. Level 0 ist die Standardtextur. Level ''n'' ist die ''n''-te Mipmap-Textur.&lt;br /&gt;
|-&lt;br /&gt;
! ''xoffset''&lt;br /&gt;
| Gibt den Texel-Offset-Wert innerhalb des Texturarrays in x-Richtung an.&lt;br /&gt;
|-&lt;br /&gt;
! ''yoffset''&lt;br /&gt;
| Gibt den Texel-Offset-Wert innerhalb des Texturarrays in y-Richtung an.&lt;br /&gt;
|-&lt;br /&gt;
! ''width''&lt;br /&gt;
| Gibt die Breite des Subimages an.&lt;br /&gt;
|-&lt;br /&gt;
! ''height''&lt;br /&gt;
| Gibt die Höhe des Subimages an.&lt;br /&gt;
|-&lt;br /&gt;
! ''format''&lt;br /&gt;
| Gibt das Format der Pixeldaten an. Die folgenden Werte sind erlaubt: &lt;br /&gt;
'''GL_COLOR_INDEX''', '''GL_RED''', '''GL_GREEN''', '''GL_BLUE''', '''GL_ALPHA''', '''GL_RGB''', '''GL_BGR''', '''GL_RGBA''', '''GL_BGRA''', '''GL_LUMINANCE''' und '''GL_LUMINANCE_ALPHA'''.&lt;br /&gt;
|-&lt;br /&gt;
! ''type''&lt;br /&gt;
| Gibt den Datentyp der Pixeldaten an. Die folgenden Werte sind erlaubt:&lt;br /&gt;
'''GL_BITMAP, GL_UNSIGNED_BYTE, GL_BYTE, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT, GL_FLOAT, GL_UNSIGNED_BYTE_3_3_2_EXT, GL_UNSIGNED_BYTE_2_3_3_REV_EXT, GL_UNSIGNED_SHORT_5_6_5_EXT, GL_UNSIGNED_SHORT_5_6_5_REV_EXT, GL_UNSIGNED_SHORT_4_4_4_4_EXT, GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT, GL_UNSIGNED_SHORT_5_5_5_1_EXT, GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT, GL_UNSIGNED_INT_8_8_8_8_EXT, GL_UNSIGNED_INT_8_8_8_8_REV_EXT, GL_UNSIGNED_INT_10_10_10_2_EXT''' und '''GL_UNSIGNED_INT_2_10_10_10_REV_EXT'''.&lt;br /&gt;
|-&lt;br /&gt;
! ''pixels''&lt;br /&gt;
| Pointer zu den zu transferierenden Bilddaten im Speicher&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Beschreibung == &lt;br /&gt;
Texturierung mapt festgelegte Teile einer angegebenen Textur auf jedes graphische Primitiv für das Texturierung aktiviert ist. Um zweidimensionales Texturieren zu aktivieren bzw. zu deaktivieren, rufe man [[glEnable]] bzw. [[glDisable]] mit dem Argument '''GL_TEXTURE_2D''' auf.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[glTexSubImage2D]] definiert einen Teil einer vorliegenden zweidimensionalen Textur neu. &lt;br /&gt;
&lt;br /&gt;
Die Texel, die durch ''pixels'' angegeben werden, ersetzen den Teil des vorliegenden Textur-Arrays mit den Positionen x bei ''xoffset'' bis ''xoffset + width - 1'' und y bei ''yoffset'' bis ''yoffset + height - 1''. Dieser Bereich muss nicht alle Texel enthalten, die im ursprünglichen Texturarray lagen. Es ist nicht falsch wenn man eine Sub-Textur mit einer Breite (oder Höhe) von 0 festlegt, aber das hat keinen Effekt.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
[[glTexSubImage2D]] wird nur ab der OpenGL-Version 1.1 oder höher unterstützt.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Texturierung hat keinen Effekt, wenn man sich im Colorindex-Modus befindet.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[glPixelStore]] und [[glPixelTransfer]] beeinflussen die Texturen genauso, wie sie es bei [[glDrawPixels]] tun.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Die Formate '''GL_BGR''' und '''GL_BGRA''' und die Typen '''GL_UNSIGNED_BYTE_3_3_2''', '''GL_UNSIGNED_BYTE_2_3_3_REV''', '''GL_UNSIGNED_SHORT_5_6_5''', '''GL_UNSIGNED_SHORT_5_6_5_REV''', '''GL_UNSIGNED_SHORT_4_4_4_4''', '''GL_UNSIGNED_SHORT_4_4_4_4_REV''', '''GL_UNSIGNED_SHORT_5_5_5_1''', '''GL_UNSIGNED_SHORT_1_5_5_5_REV''', '''GL_UNSIGNED_INT_8_8_8_8''', '''GL_UNSIGNED_INT_8_8_8_8_REV''', '''GL_UNSIGNED_INT_10_10_10_2''' und '''GL_UNSIGNED_INT_2_10_10_10_REV''' sind nur verfügbar, wenn die OpenGL-Version 1.2 oder höher ist.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn die '''GL_ARB_multitexture'''-Extension unterstützt wird, dann legt [[glTexSubImage2D]] eine zweidimensionale Subtextur für die aktuelle Textureinheit - angegeben mit [[glActiveMultiTextureARB]] - fest.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn die ''GL_ARB_imaging'''-Extension unterstützt wird, dann müssen die RGBA-Pixel, die in ''pixels'' angesteuert werden, durch die Imaging-Pipeline verarbeitetet werden. Siehe dazu [[glTexImage2D]].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen ==&lt;br /&gt;
'''GL_INVALID_ENUM''' wird generiert, wenn ''target'' nicht vom Typ '''GL_TEXTURE_2D''' ist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''GL_INVALID_OPERATION''' wird generiert, wenn das Textur-Array nicht durch eine vorhergehende [[glTexImage2D]]-Ausführung erzeugt wurde.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''GL_INVALID_VALUE''' wird generiert, wenn ''level'' kleiner 0 ist.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''GL_INVALID_VALUE''' könnte generiert werden wenn ''level'' größer als [[Bild:Log_2_max.png]] ist, wobei ''max'' der Wert von '''GL_MAX_TEXTURE_SIZE''' ist. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''GL_INVALID_VALUE''' wird generiert wenn einer der folgenden Fälle eintritt:&lt;br /&gt;
:*[[Bild:Xoffset_b.png]]&lt;br /&gt;
:*[[Bild:Xoffset_width.png]]&lt;br /&gt;
:*[[Bild:Yoffset_b.png]] &lt;br /&gt;
:*[[Bild:Yoffset_lheight.png]]&lt;br /&gt;
&lt;br /&gt;
:wobei gilt:&lt;br /&gt;
:*w ist '''GL_TEXTURE_WIDTH''',&lt;br /&gt;
:*h ist '''GL_TEXTURE_HEIGHT''',&lt;br /&gt;
:*b ist die Randbreite (border width, '''GL_TEXTURE_BORDER''') des Texturbildes was modifiziert wird,&lt;br /&gt;
:*l ist 2 wenn '''GL_INTERLACE_EXT''' aktiviert wurde.&lt;br /&gt;
:*w und h enthalten die doppelte Randbreite. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''GL_INVALID_VALUE''' wird generiert, wenn ''width'' oder ''height'' kleiner als 0 ist.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''GL_INVALID_ENUM''' wird generiert, wenn ''format'' keine akzeptable Konstante zugewiesen ist.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''GL_INVALID_ENUM''' wird generiert, wenn ''type'' keine akzeptable Konstante zugewiesen ist.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''GL_INVALID_ENUM''' wird generiert, wenn ''type'' '''GL_BITMAP''' und ''format'' nicht '''GL_COLOR_INDEX''' ist.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''GL_INVALID_OPERATION''' wird generiert, wenn glTexSubImage2D innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''GL_INVALID_OPERATION''' wird generiert, wenn ''type'' nicht '''GL_UNSIGNED_BYTE_3_3_2''', '''GL_UNSIGNED_BYTE_2_3_3_REV''', '''GL_UNSIGNED_SHORT_5_6_5''' oder '''GL_UNSIGNED_SHORT_5_6_5_REV''' und ''format'' nicht '''GL_RGB''' ist.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''GL_INVALID_OPERATION''' wird generiert, wenn ''type'' '''GL_UNSIGNED_SHORT_4_4_4_4''', '''GL_UNSIGNED_SHORT_4_4_4_4_REV''', '''GL_UNSIGNED_SHORT_5_5_5_1''', '''GL_UNSIGNED_SHORT_1_5_5_5_REV''', '''GL_UNSIGNED_INT_8_8_8_8''', '''GL_UNSIGNED_INT_8_8_8_8_REV''', '''GL_UNSIGNED_INT_10_10_10_2''' oder '''GL_UNSIGNED_INT_2_10_10_10_REV''' und ''format'' weder '''GL_RGBA''' noch '''GL_BGRA''' ist.		&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Zugehörige Wertrückgaben ==&lt;br /&gt;
[[glGetTexImage]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[glIsEnabled]] mit Token [[glIsEnabled#GL_TEXTURE_1D|GL_TEXTURE_1D]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
[[glCopyTexImage1D]], [[glCopyTexImage2D]], [[glCopyTexSubImage1D]], [[glCopyTexSubImage2D]], [[glDrawPixels]], [[glEnable]], [[glFog]], [[glGetTexImage]], [[glIsEnabled]], [[glPixelStore]], [[glPixelTransfer]], [[glTexEnv]], [[glTexGen]], [[glTexImage1D]], [[glTexImage2D]], [[glTexSubImage1D]], [[glTexSubImage3D]], [[glTexImage2D]], [[glTexParameter]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:GL|TexSubImage2D]]&lt;br /&gt;
 [[Kategorie:GL1.0]]&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Link&amp;diff=25678</id>
		<title>Link</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Link&amp;diff=25678"/>
				<updated>2012-05-20T13:32:54Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: /* Allgemein */ Titel gesetzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
!!!!!!!! NUTZT DIESE TABELLE ALS VORLAGE FÜR WEITERE LINKTABELLEN !!!!!!!&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[Link]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[Link]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Linksammlung soll allgemeine Links zu unterschiedlichen Themen bieten, die mit der Multimediaentwicklung zu tun haben.&lt;br /&gt;
{{Hinweis|Vielleicht ist eine Zusammenführung mit [[Tool]] sinnvoll!}}&lt;br /&gt;
{{Hinweis|Vielleicht ist eine Aufteilung in Unterseiten sinnvoll (möglicherweise mit Kategorien)}}&lt;br /&gt;
&lt;br /&gt;
= Entwicklung mit OpenGL =&lt;br /&gt;
&lt;br /&gt;
== Hardwareinfos ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20090417044334/http://delphi3d.net/hardware/listreports.php OpenGL Hardware Registry - Hardwareübersicht]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Datenbank aller Grafikkarten die in der Harware Registry vorhanden sind. Die einzelnen Artikel enthalten Infos darüber, welche Extensions von der Grafikkarte unterstützt werden.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20090506094005/http://delphi3d.net/hardware/ OpenGL Hardware Registry - Extensionübersicht]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Datenbank aller Extensions die in der Harware Registry vorhanden sind. Die einzelnen Artikel enthalten Infos darüber, welche Grafikkarten die entsprechende Extension unterstützen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
||[[Tutorial|DGL Wiki - Tutorial]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|DelphiGL.com ist Betreiber dieses Wikis und stellt eine Vielzahl Tutorials mit Schwehrpunkt OpenGL zur Verfügung. &lt;br /&gt;
Neben Tutorials für Einsteiger und OpenGL Anfänger gibt es auch fortgeschrittene Themen wie Shader oder Partikelsysteme.Sprache der Wahl ist hier Delphi.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.joachimrohde.com/cms/xoops/modules/articles/index.php?cat_id=1 joachimrohde.com]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet ihr deutsche Übersetzungen der bekannten NeHe Tutorials. Sprache der Wahl ist hier C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.cg.tuwien.ac.at/studentwork/VRSem96/OpenGL/ Technische Universität Wien]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Diese Seite bietet einen allgemeinen Überblick über die primären Funktionen von OpenGL und richtet sich vor allem an Einsteiger.&lt;br /&gt;
|-&lt;br /&gt;
|[http://nehe.gamedev.net/ Nehe] &lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die berühmt berüchtigten NeHe Tutorials sind eine umfangreiche Sammlung an Tutorials zum Thema OpenGL. Von Anfängertutorials bis hin zu komplexen Effekten wird alles behandelt. Sprache der Wahl ist hier C++. (Eine Übersetzung der NeHe Tutorials findet ihr bei Joachim Rhode (siehe oben). )&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.sulaco.co.za/tut.htm sulaco.co.za] &lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| OpenGL Beispiele in Delphi&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenGL Funktionen ==&lt;br /&gt;
&lt;br /&gt;
=== GL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GL|DGL Wiki - Kategorie GL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten OpenGL Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL.tar.gz OpenGL.org - Original Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die Originalspezifikationen der OpenGL 1.0 und OpenGL 1.1 Befehle. (Diese HTML-Dokumente sind nicht Copy&amp;amp;Paste freundlich, da sie vermutlich automatisch aus vorhandenen Dateien (Postscript) erzeugt wurden.)&lt;br /&gt;
|-&lt;br /&gt;
|[http://developer.3dlabs.com/documents/glmanpage_index.htm 3dLabs]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die Originalspezifikationen der OpenGL 1.0 und OpenGL 1.1 Befehle.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20040616082839/http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von Englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glfunc01_4f03.asp MSDN von Microsoft]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|OpenGL Dokumentation in der MSDN. Die Erklärung der MSDN sind meist keine reinen Kopien der Originalspezifikationen, sondern enthalten hin und wieder auch zusätzliche Informationen, oder formulieren Texte auf verständlichere Art und Weise.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLU ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GLU|DGL Wiki - Kategorie GLU]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten GLU Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glu/ OpenGL.org - Original Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Originalspezifikationen für die GLU Befehle. (Diese HTML-Dokumente sind nicht Copy&amp;amp;Paste freundlich, da sie vermutlich automatisch aus vorhandenen Dateien (Postscript) erzeugt wurden.)&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20040616082839/http://www.mevis.de/~uwe/opengl/opengl.html mevis.de mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glufnc01_0e43.asp MSDN von Microsoft]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|GLU Dokumentation in der MSDN. Die Erklärung der MSDN sind meist keine reinen Kopien der Originalspezifikationen, sondern enthalten hin und wieder auch zusätzliche Informationen, oder formulieren Texte auf verständlichere Art und Weise.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLX ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GLX|DGL Wiki - Kategorie GLX]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten GLX Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glx/ OpenGL.org - Original  Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Orgninalspezifikationen der GLX Befehle bei OpenGL.org.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20040616082839/http://www.mevis.de/~uwe/opengl/opengl.html mevis.de mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von Englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== WGL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:WGL|DGL Wiki - Kategorie WGL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Wiki-Kategorie die alle übersetzten WGL Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20071218151417/http://developer.3dlabs.com/documents/wglmanpage_index.htm 3dLabs]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung einiger WGL Befehlsspezifikationen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLUT ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://freeglut.sourceforge.net/docs/api.php The freeglut Projekt]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Englischsprachige Dokumentation zum OpenGL Utility Toolkit kurz GLUT.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SDL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:SDL|DGL Wiki - Kategorie SDL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Übersicht aller auf die SDL bezogenen Artikel hier im Wiki. Darunter befinden sich eine Vielzahl von Übersetzungen der SDL Befehlspezifikationen. Diese können auch in der [[SDL-Funktionsübersicht]] gefunden werden.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.libsdl.org/cgi/docwiki.cgi/SDL_20API libsdl.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Das Dokumentationswiki von libSDL.org enthält die komplette Dokumenation zur SDL in englischer Sprache.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.freepascal-meets-sdl.net/ freepascal meets sdl]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Eine Webseite die speziell Informationen über die Programmierung von SDL unter Freepascal zur Verfügung stellt.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== FAQs ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[FAQ| DGL Wiki - FAQ]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein FAQ (Frequently Asked Questions = Häufig gestellte Fragen) zu DelphiGL.com und dem DGL Wiki.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dsource.de/faq/index.htm 3dsource.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein FAQ zu Fragen rund um OpenGL.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Effekte und Techniken mit OpenGL ==&lt;br /&gt;
&lt;br /&gt;
===Glow===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamasutra.com/view/feature/2107/realtime_glow.php Gamasutra]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt, wie man mit Hilfe von Shader(hier DirectX Shader) den Gloweffekt in Realtime umsetzt. Dabei wird erst die Technik dahinter erklärt, und dann wie man sie Schritt für Schritt umsetzt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20071118043007/http://collective.valve-erc.com/index.php?go=tron1 valve-erc.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Schritt für Schritt Anleitung, wie man mit Hilfe von Cg in OpenGL den Glow Effekt realisieren kann &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===HDR===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20090601052809/http://www.gamedev.net/columns/hardcore/hdrrendering/ gamedev.net]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Hier wird sehr kurz eingeleitet, was HDR Rendering überhaupt ist, dann wird der Aufbau des *.hdr Formats erläutert, und dann geht es schon von 0 auf 100 zum Programmieren. Erklärungen gibt es kaum, dafür werden fertige Shader(für DirectX) geboten. &lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20090601202039/http://www.gamedev.net/reference/articles/article2208.asp gamedev.net]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt auch nur etwas kurz das HDR Verfahren, jedoch mit mehr mathematischen Hintergrund in Sachen Tonemapping. Beispielcode für Tonemapping in C++ liegt bei. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===BSP Bäume===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20081201115631/http://www.3dtechdev.com/tutorials/leafbsp/3dbsptrees.html 3dtechdev.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Das beste Dokument überhaupt, für allem die selber BSP Bäume compilieren möchte. Ist belegt mit sehr viel Grafik. Erst beginnt er das Prinzip allgemein zum umschreiben, dann wird alles genau erläutert, und mit verständlichen Pseudocode untermalt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20081019041535/http://www.3dtechdev.com/tutorials/illegalgeometry/illegalgeometrytut.html 3dtechdev.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Nicht ganz so gut geworden, wie sein erstes Tutorial, aber erklärt auch sehr gut, wie man illegale Geometrie aufspürt und beseitigt. Wieder mit Grafiken und Pseudocodes verständlich belegt. Hiermit kann man seinem Map-Compiler den letzten Schliff verleien. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/reference/articles/article981.asp Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Von Michael Abrash, dürfte der ''Erfinder'' von Quake sein. Naja, meine Englischkenntnisse reichen hier nicht ganz aus, um den Text zu verstehen. Ist etwas umständlich geschrieben. Dafür mit Grafiken unterlegt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.zfx-online.de/Tutorials.php?ID=11 Part 1 - Allgemein]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Einzigste deutsche Referenz zu BSP Bäumen, dafür Daumen hoch. Ist aber nicht das Wahre: schlechter C Code, und ich hatte auch nicht den Einduck, das er die Theorie zu diesem Thema bis in die Tiefe verstanden hat(oder er wollte es nicht zu akademisch Erklären oO). Aber ein guter Einstieg in dieses Thema. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.zfx-online.de/Tutorials.php?ID=13 Part 2 - Kollision und PVS]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20060516103821/http://www.cs.uwec.edu/~stevende/cs455/programs/GameTutorials%20-%20Quake%203%20BSP%20Format.htm Quake3 *.bsp Format]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die beste Dokumentation für das BSP Format, die ich gefunden habe, besser als den Quake3 Sourcecode zu durchforsten. Leider etwas magere Eklährung zu wichtigen Themen wie Patches(Curved Surfaces). Ich pers. hatte jetzt 1 1/2 Wochen gebraucht, um das *.bsp Format vollständig zu verstehen. Ist aber anscheinend die beste Format Dokumentation im Netz. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_q2bsp.shtml Quake2 *.bsp Format]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Kann auch nur soviel sagen, wie beim Link zuvor. Es fehlen hier auch zum Teil Informationen. Man muss halt viel ausprobieren, und sich den Quake 2 Source zu Herzen nehmen, damit man es versteht. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Himmel &amp;amp; Wolken===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/community/forums/topic.asp?topic_id=86024 Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Guter Thread mit vielen Anregungen und Links. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/community/forums/topic.asp?topic_id=135654 Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Hier wird die Diskussion zum obigen Link weitergeführt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://freespace.virgin.net/hugo.elias/models/m_clouds.htm Plasma]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine nette Idee um Plasma in Echtzeit zu generieren, und zu verändern. Leider nichts zum Shading. &lt;br /&gt;
|-&lt;br /&gt;
|[http://nis-lab.is.s.u-tokyo.ac.jp/~nis/cdrom/sig00_cloud.pdf 3D Wolken]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Paper über generieren und rendern von 3 dimensionalen Wolken inklusive Schatten und Lichtstrahlen. Ich hab nur den Lichtstahlen-Algorithmus ausprobiert. Saulangsam aber sehr einfach zu implementieren. Einen Blick ist es auf jeden Fall wert. &lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20031011052035/http://www.geocities.com/ngdash/whitepapers/skydomecolor.html Skydome]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Wenn man mal schnell gute Farben für seinen Skydome braucht... &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Terrain===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_geomipmaps.shtml FlipCode]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Artikel zu Geomipmaping. Zummindest hab ich es hier zum ersten mal gesehen. Und es funzt ganz gut. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.vterrain.org Virtual Terrain Project]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Seite mit Links und Artikeln zu allem, was etwas mit Terrainrendering zu tun hat.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sonstiges===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[Materialsammlung]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Sammlung von gängigen Parametern für [[glMaterial]] hier im Wiki.&lt;br /&gt;
|-&lt;br /&gt;
|[http://freespace.virgin.net/hugo.elias/radiosity/radiosity.htm Radiosity]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Erklärt sehr schön die Funktionsweise von Radiosity, liefert Beispielcodes und ist recht gut illustriert.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20050825110920/http://legion.gibbering.net/projectx/paper/shadow%20mapping/ Shadowmapping]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt das Trapezoidal Shadow Mapping - Verfahren für gerichte Lichter.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_generatingnames.shtml Namensgenerator]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Per Zufallsgenrator Namen erzeugen, und nie wieder kreativ werden müssen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.paulsprojects.net/tutorials/simplebump/simplebump.html Bumpmapping]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Bumpmapping auf Lowend-Grakas. Damals war Bumpmapping noch was ganz tolles... &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.paulsprojects.net/opengl/dpreflect/dpreflect.html Dot Product Reflect]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|zwar nur ne Demo, aber wenn man schon immer mal mit EMBM das Wasser aus Morrowind nachproggen wollte... &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Beispiele/Demos mit Quelltext ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.delphigl.de DelphiGL.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier finden sich besonders eindrucksvolle Newton Physik Demos. Meißtens sogar mit Quelltext.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.shadow3d.de.vu/ Shadow 3D]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier finden sich zwei Demos wie man Quake 3 Modelle lädt und eine glSlang Demo&lt;br /&gt;
|-&lt;br /&gt;
|[[Shadersammlung]] im DGL Wiki&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier findet man freie Shadersourcen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.humus.name Humus]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Diverse eindrucksvolle Demos zu verschiedenen Techniken, häufig mit Quelltext in C (teilweise OpenGL / DirectX)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== weitere Links ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www-user.tu-chemnitz.de/~pester/Lehre/CompGeo.pdf CompGeo.pdf]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Script &amp;quot;Einführung in die Computergeometrie&amp;quot; von Dr. Pester (TU-Chemnitz). Ideales Nachschlagewerk für die Mathematik die einem bei der Grafikprogrammierung so begegnet.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.robsite.de/ robsite.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Auf dieser riesigen Seite finden sich auch viele weitere Links über verschiedene Themen der 3D Programmierung.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dlinks.com/links.cfm?categoryid=3&amp;amp;subcategoryid=21 3dlinks.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Diese Seite hat es sich zur Hauptaufgabe gemacht Links auf Seiten mit dem Thema 3D zu sammeln.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.two-kings.de/links.html two-kings.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Sammlung diverser interessanter Links, vorallem auf Themen im gamedev-Forum verweisend.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.delgine.com Delgine.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Heimat des freien 3D Modellers &amp;quot;DeleD&amp;quot;, welcher in Delphi programmiert ist. Ihr findet dort auch Modellpackete, Texturpackete, Plugins und Hilfe bei der Programmierung von Delphi und OpenGL.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Spieleentwicklung =&lt;br /&gt;
&lt;br /&gt;
==Allgemein==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.spieleprogrammierung.net/ Spieleprogrammierung - OpenGL - GLSL - OpenAL - KI - Animation - Spielephysik]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr Artikel, Tutorials und Programmbeispiele rund um das Thema Spieleprogrammierung. Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://graphics-and-physics-framework.spieleprogrammierung.net/ OpenGL Graphics And Physics Framework]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr ein frei verfügbares OpenGL basiertes Grafik und Physik Framework (LGPL-Lizenz) samt zugehöriger Probammbeispiele. Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://audio-framework.spieleprogrammierung.net/ OpenAL Audio Framework]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr ein frei verfügbares OpenAL Audio Framework (LGPL-Lizenz) samt zugehöriger Probammbeispiele. Unterstützt werden 3D Sounds, EFX (EAX Alternative) Reverb Effekte sowie Audio Streaming (Music and Voices). Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://spieleentwicklung-im-web.spieleprogrammierung.net/ Spieleentwicklung im Web]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr Links (E-Books, Präsentationen, wissenschaftliche Arbeiten und Tutorials) zu verschiedenen Themengebieten der Spieleentwicklung.&lt;br /&gt;
|-&lt;br /&gt;
|[http://harablog.wordpress.com/2011/08/26/fast-pathfinding-via-symmetry-breaking/ Fast pathfinding via symmetry breaking]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Optimierungen für A* Pfadsuche durch Ausnutzung von Symmetrien.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Kopierschutz==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://inner-smile.com/nocrack.phtml Inner-Smile.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Seite mit Gedanken zum Thema &amp;quot;Wie schütze ich meine Programme vor Crackern&amp;quot;. Falls die Seite nicht erreichbar ist hat Google noch ne [http://www.google.com/search?q=cache:hpqPT5G4WB0J:www.inner-smile.com/nocrack.phtml+http://inner-smile.com/nocrack.phtml&amp;amp;hl=de&amp;amp;gl=de&amp;amp;ct=clnk&amp;amp;cd=1 Version im Archiv].&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Künstliche Intelligenz ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20080319034335/http://www.kbs.uni-hannover.de/Lehre/KI2/Presentationen/presentation9798/esprit/spieltheorie/spieltheorie.html Uni-Hannover - Spieltheorie]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Artikel über die Grundlagen von KI in Spielen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20080927010337/http://www.robsite.de/tutorials.php?tut=ki Robsite KI-Tutorials]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Sammlung von Texten zum Thema KI in Spielen. Beispiele sind meist in C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://ai-depot.com/ AI-Depot.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Seite die sich ausschließlich mit KI in Spielen beschäftigt.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ai-junkie.com/links.html AI-Junkie.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Linkseite mit vielen KI relevanten Links. Die Seite AI-Junie selbst behandelt auch viele Themen rund um KI.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.aiwisdom.com/ AIWisdom.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Seite die sich mit KIs in Spielen beschäftigt und sich zum Ziel gesetzt hat, alle Artikel zum Thema zu finden und zu Katalogisieren. Es gibt hier auch Artikel über die KIs bestehender Spiele.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.aiguru.com/ AIGuru.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Newsseite zum Thema KI, Künstliches Leben, Hiernforschung, Robotik, Nanotechnologie - Halt alles was Spass macht.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.generation5.org/ Generation5.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Seite über KI, Robotik, etc. . Leider scheint die Seite Probleme zu haben regelmäßig aktualisiert zu werden. Aber zumindest sollte man einige Artikel finden. Die werden ja nicht schlecht.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20080702005527/http://www.gameai.com/ www.gameai.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|''Wurde Januar 2010 als down gemeldet. Weiss irgendwer etwas genaueres?'' Seite zum Thema KI in Spielen. Soll wohl einen gewissen Stellenwert in der AI-Szene haben.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www-i1.informatik.rwth-aachen.de/~algorithmus/algo19.php Algorithmus der Woche - Informatikjahr 2006]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Vielleicht schon etwas älter aber doch eine gute Anleitung um eine einfache Schach-KI zu erstellen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Ressourcen =&lt;br /&gt;
In dieser Gruppe finden sich Links um die Ressourcen für Eure Projekte zu erstellen.&lt;br /&gt;
&lt;br /&gt;
== Texturen / 2D-Grafiken ==&lt;br /&gt;
&lt;br /&gt;
'''Legende:'''&lt;br /&gt;
:'''Kostenpflichtige Seiten''' sind mit einem * zu '''kennzeichnen'''&lt;br /&gt;
:GPL: Kompatibel mit der GPL&lt;br /&gt;
:MPL: Kompatibel mit der MPL&lt;br /&gt;
:OSS: Verwendung in OpenSource Software nicht verboten&lt;br /&gt;
:CSS: Verwendung in ClosedSource Software nicht verboten&lt;br /&gt;
:Komm: Verwendung in kommerzieller Software nicht verboten&lt;br /&gt;
&lt;br /&gt;
=== Texturen ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;|Genre&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;|Lizenz&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|GPL&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|MPL&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|OSS&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|CSS&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Komm.&lt;br /&gt;
!width=&amp;quot;35%&amp;quot;|Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.davegh.com/vg/home.htm davegh.com]&lt;br /&gt;
|Fantasy&lt;br /&gt;
|[http://www.davegh.com/vg/termsandconditions.htm Eigene]&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|Die Lizenz vererbt sich in die Projekte hinein.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.cgtextures.com/ cgtextures.com]&lt;br /&gt;
|Allgemein&lt;br /&gt;
|[http://www.cgtextures.com/content.php?action=license Eigene]&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|Die Lizenz will im wesentlichen verhindern das Texturen in anderen Textursammlungen auftauchen. So wie ich das verstehe ist es kein Problem die Texturen unter einer anderen Lizenz zu veröffentlichen als die eigentliche Software. Die Software kann also sehr wohl OpenSource sein. Im Zweifelsfalls einfach den Support anschreiben, der ist sehr nett.&lt;br /&gt;
|-&lt;br /&gt;
|[https://wiki.openstreetmap.org/wiki/Texture_Library OpenStreetMap Texture Library]&lt;br /&gt;
|Allgemein &lt;br /&gt;
|Public Domain&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|Die Texturen dienen der Visualisierung der 3D-Gebäude im OpenStreetMap Projekt&lt;br /&gt;
|-&lt;br /&gt;
|url&lt;br /&gt;
|Futuristisch, Mittelalter, etc.&lt;br /&gt;
|CC-BY-SA, etc., gerne auch mit Direktlink auf die Lizenzseite, so vorhanden.&lt;br /&gt;
|✔/✘/?&lt;br /&gt;
|✔/✘/?&lt;br /&gt;
|✔/✘/?&lt;br /&gt;
|✔/✘/?&lt;br /&gt;
|✔/✘/?&lt;br /&gt;
|Alle Bilder sind von Käse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Sonstige 2D-Grafiken ===&lt;br /&gt;
&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;45%&amp;quot;|Beschreibung&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;|Lizenz&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|GPL&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|MPL&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|OSS&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|CSS&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Komm.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.famfamfam.com/lab/icons/silk/ famfamfam silk]&lt;br /&gt;
|Iconset, welches inzwischen relativ weit verbreitet ist. 700 sauber gezeichnete, erkennbare PNG-Icons in TrueColor. Man kann praktisch jede (Arbeits-)Anwendung mit diesem Set vollständig mit Icons versorgen.&lt;br /&gt;
|[http://creativecommons.org/licenses/by/2.5/ CC-BY 2.5], [http://creativecommons.org/licenses/by/3.0/ CC-BY 3.0]&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Texturerstellung ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://3d.diehlsworld.de/textures/index.htm 3d.diehlsworld.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet ihr kurze aber inhaltlich reiche Tutorials zu der Frage &amp;quot;Wie erstelle ich XXXXX-Texturen&amp;quot;. Dabei reicht die Palette von Untergrundtexturen wie Gras, Sand , Fels und Wasser (und Kombinationen dieser) bis hin zu Blitzen und Partikeln. Als Programm wird hier Photoshop verwendet.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gimps.de/gimp/textur-muster/ gimps.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Schritt für Schritt Anleitungen wie man mit Gimp verschiedene Texturen erstellt.&lt;br /&gt;
|-&lt;br /&gt;
|[http://cbt.k090999.de/gimp.php#texturen k090999.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Gimptutorials zum Erstellen verschiedene Texturen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Modelle / 3D-Grafiken ==&lt;br /&gt;
&lt;br /&gt;
=== Blender ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://blendpolis.de/f/viewtopic.php?t=5786 Blendpolis]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Ein Thread im Forum von [http://blendpolis.de Blendpolis] in dem '''sehr''' viele Tutorials aufgelistet sind&lt;br /&gt;
|-&lt;br /&gt;
|[http://blendpolis.de/f/article_cat.php?fldAuto=7 Blendpolis]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Eigentliche Tutorial Seite von [http://blendpolis.de Blendpolis] die Auswahl ist hier aber nicht so groß&lt;br /&gt;
|-&lt;br /&gt;
|[http://wikivid.com/index.php/Blender Blender at wikivid.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Linksammlung von Blender Video Tutorials &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.blender.org/education-help/tutorials/getting-started/ blender3d.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Auch die Heimatseite von Blender bietet viele Tutorials unter anderm auch Video Tuorials&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.Blenderunderground.com Blenderunderground]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| '''sehr gute''' Video-Tutorials&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sounds ==&lt;br /&gt;
&lt;br /&gt;
===Musik===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.jamendo.com/ Jamendo.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Viele Künstler stellen hier ihre Alben unter einer Creative Commons Lizenz online. Man kann dort die Künstler auch kontaktieren und fragen ob man ihre Musik nutzen kann. Taugt außerdem als Radio! ;)&lt;br /&gt;
|-&lt;br /&gt;
|[http://incompetech.com/m/c/royalty-free/ Incompetech.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Viele sehr schön gemacht instrumentale Musik aus allen möglichen Genres. Sie ist frei verwenderbar, wenn man den Macher der Musik (Kevin MacLeod) in seinem Programm erwähnt. Aber das hat er auch verdient. Folgende Programme nutzen beispielsweise (auch) Musik von incompetech.com:&lt;br /&gt;
* OpenParty&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Soundeffekte===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.freesound.org/ freesound.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Diverse Sounds unter [http://www.creativecommons.org/ CreativeCommons] Lizenzen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Soundprogramme===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://audacity.sourceforge.net/?lang=de Sourceforgeseite von Audacity]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein einfaches, freies Programm um Sounddateien zu bearbeiten. Man kann es auch nutzen um Soundeffekte neu zu erstellen, indem man z.B. ein Geräusch mit dem Mikrofon aufnimmt und einige Effekt anwendet, um es passender und nicht mehr aufgenommen klingen zu lassen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://lmms.sourceforge.net/ LMMS]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|LMMS (Linux MultiMedia Studio) ist ein OpenSource+Freeware Composer-Programm ähnlich zum bekannteren aber auch teuren CuBase(r). Trotz des Namens auch für Windows erhältlich.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Link&amp;diff=25677</id>
		<title>Link</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Link&amp;diff=25677"/>
				<updated>2012-05-20T13:32:28Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: /* Allgemein */ http://harablog.wordpress.com/2011/08/26/fast-pathfinding-via-symmetry-breaking/ hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
!!!!!!!! NUTZT DIESE TABELLE ALS VORLAGE FÜR WEITERE LINKTABELLEN !!!!!!!&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[Link]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[Link]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Linksammlung soll allgemeine Links zu unterschiedlichen Themen bieten, die mit der Multimediaentwicklung zu tun haben.&lt;br /&gt;
{{Hinweis|Vielleicht ist eine Zusammenführung mit [[Tool]] sinnvoll!}}&lt;br /&gt;
{{Hinweis|Vielleicht ist eine Aufteilung in Unterseiten sinnvoll (möglicherweise mit Kategorien)}}&lt;br /&gt;
&lt;br /&gt;
= Entwicklung mit OpenGL =&lt;br /&gt;
&lt;br /&gt;
== Hardwareinfos ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20090417044334/http://delphi3d.net/hardware/listreports.php OpenGL Hardware Registry - Hardwareübersicht]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Datenbank aller Grafikkarten die in der Harware Registry vorhanden sind. Die einzelnen Artikel enthalten Infos darüber, welche Extensions von der Grafikkarte unterstützt werden.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20090506094005/http://delphi3d.net/hardware/ OpenGL Hardware Registry - Extensionübersicht]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Datenbank aller Extensions die in der Harware Registry vorhanden sind. Die einzelnen Artikel enthalten Infos darüber, welche Grafikkarten die entsprechende Extension unterstützen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
||[[Tutorial|DGL Wiki - Tutorial]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|DelphiGL.com ist Betreiber dieses Wikis und stellt eine Vielzahl Tutorials mit Schwehrpunkt OpenGL zur Verfügung. &lt;br /&gt;
Neben Tutorials für Einsteiger und OpenGL Anfänger gibt es auch fortgeschrittene Themen wie Shader oder Partikelsysteme.Sprache der Wahl ist hier Delphi.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.joachimrohde.com/cms/xoops/modules/articles/index.php?cat_id=1 joachimrohde.com]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet ihr deutsche Übersetzungen der bekannten NeHe Tutorials. Sprache der Wahl ist hier C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.cg.tuwien.ac.at/studentwork/VRSem96/OpenGL/ Technische Universität Wien]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Diese Seite bietet einen allgemeinen Überblick über die primären Funktionen von OpenGL und richtet sich vor allem an Einsteiger.&lt;br /&gt;
|-&lt;br /&gt;
|[http://nehe.gamedev.net/ Nehe] &lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die berühmt berüchtigten NeHe Tutorials sind eine umfangreiche Sammlung an Tutorials zum Thema OpenGL. Von Anfängertutorials bis hin zu komplexen Effekten wird alles behandelt. Sprache der Wahl ist hier C++. (Eine Übersetzung der NeHe Tutorials findet ihr bei Joachim Rhode (siehe oben). )&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.sulaco.co.za/tut.htm sulaco.co.za] &lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| OpenGL Beispiele in Delphi&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenGL Funktionen ==&lt;br /&gt;
&lt;br /&gt;
=== GL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GL|DGL Wiki - Kategorie GL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten OpenGL Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL.tar.gz OpenGL.org - Original Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die Originalspezifikationen der OpenGL 1.0 und OpenGL 1.1 Befehle. (Diese HTML-Dokumente sind nicht Copy&amp;amp;Paste freundlich, da sie vermutlich automatisch aus vorhandenen Dateien (Postscript) erzeugt wurden.)&lt;br /&gt;
|-&lt;br /&gt;
|[http://developer.3dlabs.com/documents/glmanpage_index.htm 3dLabs]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die Originalspezifikationen der OpenGL 1.0 und OpenGL 1.1 Befehle.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20040616082839/http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von Englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glfunc01_4f03.asp MSDN von Microsoft]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|OpenGL Dokumentation in der MSDN. Die Erklärung der MSDN sind meist keine reinen Kopien der Originalspezifikationen, sondern enthalten hin und wieder auch zusätzliche Informationen, oder formulieren Texte auf verständlichere Art und Weise.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLU ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GLU|DGL Wiki - Kategorie GLU]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten GLU Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glu/ OpenGL.org - Original Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Originalspezifikationen für die GLU Befehle. (Diese HTML-Dokumente sind nicht Copy&amp;amp;Paste freundlich, da sie vermutlich automatisch aus vorhandenen Dateien (Postscript) erzeugt wurden.)&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20040616082839/http://www.mevis.de/~uwe/opengl/opengl.html mevis.de mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glufnc01_0e43.asp MSDN von Microsoft]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|GLU Dokumentation in der MSDN. Die Erklärung der MSDN sind meist keine reinen Kopien der Originalspezifikationen, sondern enthalten hin und wieder auch zusätzliche Informationen, oder formulieren Texte auf verständlichere Art und Weise.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLX ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GLX|DGL Wiki - Kategorie GLX]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten GLX Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glx/ OpenGL.org - Original  Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Orgninalspezifikationen der GLX Befehle bei OpenGL.org.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20040616082839/http://www.mevis.de/~uwe/opengl/opengl.html mevis.de mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von Englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== WGL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:WGL|DGL Wiki - Kategorie WGL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Wiki-Kategorie die alle übersetzten WGL Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20071218151417/http://developer.3dlabs.com/documents/wglmanpage_index.htm 3dLabs]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung einiger WGL Befehlsspezifikationen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLUT ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://freeglut.sourceforge.net/docs/api.php The freeglut Projekt]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Englischsprachige Dokumentation zum OpenGL Utility Toolkit kurz GLUT.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SDL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:SDL|DGL Wiki - Kategorie SDL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Übersicht aller auf die SDL bezogenen Artikel hier im Wiki. Darunter befinden sich eine Vielzahl von Übersetzungen der SDL Befehlspezifikationen. Diese können auch in der [[SDL-Funktionsübersicht]] gefunden werden.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.libsdl.org/cgi/docwiki.cgi/SDL_20API libsdl.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Das Dokumentationswiki von libSDL.org enthält die komplette Dokumenation zur SDL in englischer Sprache.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.freepascal-meets-sdl.net/ freepascal meets sdl]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Eine Webseite die speziell Informationen über die Programmierung von SDL unter Freepascal zur Verfügung stellt.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== FAQs ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[FAQ| DGL Wiki - FAQ]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein FAQ (Frequently Asked Questions = Häufig gestellte Fragen) zu DelphiGL.com und dem DGL Wiki.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dsource.de/faq/index.htm 3dsource.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein FAQ zu Fragen rund um OpenGL.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Effekte und Techniken mit OpenGL ==&lt;br /&gt;
&lt;br /&gt;
===Glow===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamasutra.com/view/feature/2107/realtime_glow.php Gamasutra]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt, wie man mit Hilfe von Shader(hier DirectX Shader) den Gloweffekt in Realtime umsetzt. Dabei wird erst die Technik dahinter erklärt, und dann wie man sie Schritt für Schritt umsetzt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20071118043007/http://collective.valve-erc.com/index.php?go=tron1 valve-erc.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Schritt für Schritt Anleitung, wie man mit Hilfe von Cg in OpenGL den Glow Effekt realisieren kann &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===HDR===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20090601052809/http://www.gamedev.net/columns/hardcore/hdrrendering/ gamedev.net]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Hier wird sehr kurz eingeleitet, was HDR Rendering überhaupt ist, dann wird der Aufbau des *.hdr Formats erläutert, und dann geht es schon von 0 auf 100 zum Programmieren. Erklärungen gibt es kaum, dafür werden fertige Shader(für DirectX) geboten. &lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20090601202039/http://www.gamedev.net/reference/articles/article2208.asp gamedev.net]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt auch nur etwas kurz das HDR Verfahren, jedoch mit mehr mathematischen Hintergrund in Sachen Tonemapping. Beispielcode für Tonemapping in C++ liegt bei. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===BSP Bäume===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20081201115631/http://www.3dtechdev.com/tutorials/leafbsp/3dbsptrees.html 3dtechdev.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Das beste Dokument überhaupt, für allem die selber BSP Bäume compilieren möchte. Ist belegt mit sehr viel Grafik. Erst beginnt er das Prinzip allgemein zum umschreiben, dann wird alles genau erläutert, und mit verständlichen Pseudocode untermalt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20081019041535/http://www.3dtechdev.com/tutorials/illegalgeometry/illegalgeometrytut.html 3dtechdev.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Nicht ganz so gut geworden, wie sein erstes Tutorial, aber erklärt auch sehr gut, wie man illegale Geometrie aufspürt und beseitigt. Wieder mit Grafiken und Pseudocodes verständlich belegt. Hiermit kann man seinem Map-Compiler den letzten Schliff verleien. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/reference/articles/article981.asp Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Von Michael Abrash, dürfte der ''Erfinder'' von Quake sein. Naja, meine Englischkenntnisse reichen hier nicht ganz aus, um den Text zu verstehen. Ist etwas umständlich geschrieben. Dafür mit Grafiken unterlegt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.zfx-online.de/Tutorials.php?ID=11 Part 1 - Allgemein]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Einzigste deutsche Referenz zu BSP Bäumen, dafür Daumen hoch. Ist aber nicht das Wahre: schlechter C Code, und ich hatte auch nicht den Einduck, das er die Theorie zu diesem Thema bis in die Tiefe verstanden hat(oder er wollte es nicht zu akademisch Erklären oO). Aber ein guter Einstieg in dieses Thema. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.zfx-online.de/Tutorials.php?ID=13 Part 2 - Kollision und PVS]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20060516103821/http://www.cs.uwec.edu/~stevende/cs455/programs/GameTutorials%20-%20Quake%203%20BSP%20Format.htm Quake3 *.bsp Format]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die beste Dokumentation für das BSP Format, die ich gefunden habe, besser als den Quake3 Sourcecode zu durchforsten. Leider etwas magere Eklährung zu wichtigen Themen wie Patches(Curved Surfaces). Ich pers. hatte jetzt 1 1/2 Wochen gebraucht, um das *.bsp Format vollständig zu verstehen. Ist aber anscheinend die beste Format Dokumentation im Netz. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_q2bsp.shtml Quake2 *.bsp Format]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Kann auch nur soviel sagen, wie beim Link zuvor. Es fehlen hier auch zum Teil Informationen. Man muss halt viel ausprobieren, und sich den Quake 2 Source zu Herzen nehmen, damit man es versteht. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Himmel &amp;amp; Wolken===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/community/forums/topic.asp?topic_id=86024 Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Guter Thread mit vielen Anregungen und Links. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/community/forums/topic.asp?topic_id=135654 Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Hier wird die Diskussion zum obigen Link weitergeführt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://freespace.virgin.net/hugo.elias/models/m_clouds.htm Plasma]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine nette Idee um Plasma in Echtzeit zu generieren, und zu verändern. Leider nichts zum Shading. &lt;br /&gt;
|-&lt;br /&gt;
|[http://nis-lab.is.s.u-tokyo.ac.jp/~nis/cdrom/sig00_cloud.pdf 3D Wolken]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Paper über generieren und rendern von 3 dimensionalen Wolken inklusive Schatten und Lichtstrahlen. Ich hab nur den Lichtstahlen-Algorithmus ausprobiert. Saulangsam aber sehr einfach zu implementieren. Einen Blick ist es auf jeden Fall wert. &lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20031011052035/http://www.geocities.com/ngdash/whitepapers/skydomecolor.html Skydome]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Wenn man mal schnell gute Farben für seinen Skydome braucht... &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Terrain===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_geomipmaps.shtml FlipCode]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Artikel zu Geomipmaping. Zummindest hab ich es hier zum ersten mal gesehen. Und es funzt ganz gut. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.vterrain.org Virtual Terrain Project]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Seite mit Links und Artikeln zu allem, was etwas mit Terrainrendering zu tun hat.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sonstiges===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[Materialsammlung]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Sammlung von gängigen Parametern für [[glMaterial]] hier im Wiki.&lt;br /&gt;
|-&lt;br /&gt;
|[http://freespace.virgin.net/hugo.elias/radiosity/radiosity.htm Radiosity]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Erklärt sehr schön die Funktionsweise von Radiosity, liefert Beispielcodes und ist recht gut illustriert.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20050825110920/http://legion.gibbering.net/projectx/paper/shadow%20mapping/ Shadowmapping]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt das Trapezoidal Shadow Mapping - Verfahren für gerichte Lichter.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_generatingnames.shtml Namensgenerator]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Per Zufallsgenrator Namen erzeugen, und nie wieder kreativ werden müssen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.paulsprojects.net/tutorials/simplebump/simplebump.html Bumpmapping]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Bumpmapping auf Lowend-Grakas. Damals war Bumpmapping noch was ganz tolles... &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.paulsprojects.net/opengl/dpreflect/dpreflect.html Dot Product Reflect]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|zwar nur ne Demo, aber wenn man schon immer mal mit EMBM das Wasser aus Morrowind nachproggen wollte... &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Beispiele/Demos mit Quelltext ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.delphigl.de DelphiGL.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier finden sich besonders eindrucksvolle Newton Physik Demos. Meißtens sogar mit Quelltext.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.shadow3d.de.vu/ Shadow 3D]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier finden sich zwei Demos wie man Quake 3 Modelle lädt und eine glSlang Demo&lt;br /&gt;
|-&lt;br /&gt;
|[[Shadersammlung]] im DGL Wiki&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier findet man freie Shadersourcen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.humus.name Humus]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Diverse eindrucksvolle Demos zu verschiedenen Techniken, häufig mit Quelltext in C (teilweise OpenGL / DirectX)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== weitere Links ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www-user.tu-chemnitz.de/~pester/Lehre/CompGeo.pdf CompGeo.pdf]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Script &amp;quot;Einführung in die Computergeometrie&amp;quot; von Dr. Pester (TU-Chemnitz). Ideales Nachschlagewerk für die Mathematik die einem bei der Grafikprogrammierung so begegnet.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.robsite.de/ robsite.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Auf dieser riesigen Seite finden sich auch viele weitere Links über verschiedene Themen der 3D Programmierung.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dlinks.com/links.cfm?categoryid=3&amp;amp;subcategoryid=21 3dlinks.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Diese Seite hat es sich zur Hauptaufgabe gemacht Links auf Seiten mit dem Thema 3D zu sammeln.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.two-kings.de/links.html two-kings.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Sammlung diverser interessanter Links, vorallem auf Themen im gamedev-Forum verweisend.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.delgine.com Delgine.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Heimat des freien 3D Modellers &amp;quot;DeleD&amp;quot;, welcher in Delphi programmiert ist. Ihr findet dort auch Modellpackete, Texturpackete, Plugins und Hilfe bei der Programmierung von Delphi und OpenGL.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Spieleentwicklung =&lt;br /&gt;
&lt;br /&gt;
==Allgemein==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.spieleprogrammierung.net/ Spieleprogrammierung - OpenGL - GLSL - OpenAL - KI - Animation - Spielephysik]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr Artikel, Tutorials und Programmbeispiele rund um das Thema Spieleprogrammierung. Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://graphics-and-physics-framework.spieleprogrammierung.net/ OpenGL Graphics And Physics Framework]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr ein frei verfügbares OpenGL basiertes Grafik und Physik Framework (LGPL-Lizenz) samt zugehöriger Probammbeispiele. Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://audio-framework.spieleprogrammierung.net/ OpenAL Audio Framework]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr ein frei verfügbares OpenAL Audio Framework (LGPL-Lizenz) samt zugehöriger Probammbeispiele. Unterstützt werden 3D Sounds, EFX (EAX Alternative) Reverb Effekte sowie Audio Streaming (Music and Voices). Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://spieleentwicklung-im-web.spieleprogrammierung.net/ Spieleentwicklung im Web]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr Links (E-Books, Präsentationen, wissenschaftliche Arbeiten und Tutorials) zu verschiedenen Themengebieten der Spieleentwicklung.&lt;br /&gt;
|-&lt;br /&gt;
|[http://harablog.wordpress.com/2011/08/26/fast-pathfinding-via-symmetry-breaking/]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Optimierungen für A* Pfadsuche durch Ausnutzung von Symmetrien.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Kopierschutz==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://inner-smile.com/nocrack.phtml Inner-Smile.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Seite mit Gedanken zum Thema &amp;quot;Wie schütze ich meine Programme vor Crackern&amp;quot;. Falls die Seite nicht erreichbar ist hat Google noch ne [http://www.google.com/search?q=cache:hpqPT5G4WB0J:www.inner-smile.com/nocrack.phtml+http://inner-smile.com/nocrack.phtml&amp;amp;hl=de&amp;amp;gl=de&amp;amp;ct=clnk&amp;amp;cd=1 Version im Archiv].&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Künstliche Intelligenz ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20080319034335/http://www.kbs.uni-hannover.de/Lehre/KI2/Presentationen/presentation9798/esprit/spieltheorie/spieltheorie.html Uni-Hannover - Spieltheorie]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Artikel über die Grundlagen von KI in Spielen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20080927010337/http://www.robsite.de/tutorials.php?tut=ki Robsite KI-Tutorials]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Sammlung von Texten zum Thema KI in Spielen. Beispiele sind meist in C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://ai-depot.com/ AI-Depot.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Seite die sich ausschließlich mit KI in Spielen beschäftigt.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ai-junkie.com/links.html AI-Junkie.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Linkseite mit vielen KI relevanten Links. Die Seite AI-Junie selbst behandelt auch viele Themen rund um KI.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.aiwisdom.com/ AIWisdom.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Seite die sich mit KIs in Spielen beschäftigt und sich zum Ziel gesetzt hat, alle Artikel zum Thema zu finden und zu Katalogisieren. Es gibt hier auch Artikel über die KIs bestehender Spiele.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.aiguru.com/ AIGuru.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Newsseite zum Thema KI, Künstliches Leben, Hiernforschung, Robotik, Nanotechnologie - Halt alles was Spass macht.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.generation5.org/ Generation5.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Seite über KI, Robotik, etc. . Leider scheint die Seite Probleme zu haben regelmäßig aktualisiert zu werden. Aber zumindest sollte man einige Artikel finden. Die werden ja nicht schlecht.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20080702005527/http://www.gameai.com/ www.gameai.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|''Wurde Januar 2010 als down gemeldet. Weiss irgendwer etwas genaueres?'' Seite zum Thema KI in Spielen. Soll wohl einen gewissen Stellenwert in der AI-Szene haben.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www-i1.informatik.rwth-aachen.de/~algorithmus/algo19.php Algorithmus der Woche - Informatikjahr 2006]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Vielleicht schon etwas älter aber doch eine gute Anleitung um eine einfache Schach-KI zu erstellen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Ressourcen =&lt;br /&gt;
In dieser Gruppe finden sich Links um die Ressourcen für Eure Projekte zu erstellen.&lt;br /&gt;
&lt;br /&gt;
== Texturen / 2D-Grafiken ==&lt;br /&gt;
&lt;br /&gt;
'''Legende:'''&lt;br /&gt;
:'''Kostenpflichtige Seiten''' sind mit einem * zu '''kennzeichnen'''&lt;br /&gt;
:GPL: Kompatibel mit der GPL&lt;br /&gt;
:MPL: Kompatibel mit der MPL&lt;br /&gt;
:OSS: Verwendung in OpenSource Software nicht verboten&lt;br /&gt;
:CSS: Verwendung in ClosedSource Software nicht verboten&lt;br /&gt;
:Komm: Verwendung in kommerzieller Software nicht verboten&lt;br /&gt;
&lt;br /&gt;
=== Texturen ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;|Genre&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;|Lizenz&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|GPL&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|MPL&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|OSS&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|CSS&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Komm.&lt;br /&gt;
!width=&amp;quot;35%&amp;quot;|Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.davegh.com/vg/home.htm davegh.com]&lt;br /&gt;
|Fantasy&lt;br /&gt;
|[http://www.davegh.com/vg/termsandconditions.htm Eigene]&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|Die Lizenz vererbt sich in die Projekte hinein.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.cgtextures.com/ cgtextures.com]&lt;br /&gt;
|Allgemein&lt;br /&gt;
|[http://www.cgtextures.com/content.php?action=license Eigene]&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|Die Lizenz will im wesentlichen verhindern das Texturen in anderen Textursammlungen auftauchen. So wie ich das verstehe ist es kein Problem die Texturen unter einer anderen Lizenz zu veröffentlichen als die eigentliche Software. Die Software kann also sehr wohl OpenSource sein. Im Zweifelsfalls einfach den Support anschreiben, der ist sehr nett.&lt;br /&gt;
|-&lt;br /&gt;
|[https://wiki.openstreetmap.org/wiki/Texture_Library OpenStreetMap Texture Library]&lt;br /&gt;
|Allgemein &lt;br /&gt;
|Public Domain&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|Die Texturen dienen der Visualisierung der 3D-Gebäude im OpenStreetMap Projekt&lt;br /&gt;
|-&lt;br /&gt;
|url&lt;br /&gt;
|Futuristisch, Mittelalter, etc.&lt;br /&gt;
|CC-BY-SA, etc., gerne auch mit Direktlink auf die Lizenzseite, so vorhanden.&lt;br /&gt;
|✔/✘/?&lt;br /&gt;
|✔/✘/?&lt;br /&gt;
|✔/✘/?&lt;br /&gt;
|✔/✘/?&lt;br /&gt;
|✔/✘/?&lt;br /&gt;
|Alle Bilder sind von Käse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Sonstige 2D-Grafiken ===&lt;br /&gt;
&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;45%&amp;quot;|Beschreibung&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;|Lizenz&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|GPL&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|MPL&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|OSS&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|CSS&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Komm.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.famfamfam.com/lab/icons/silk/ famfamfam silk]&lt;br /&gt;
|Iconset, welches inzwischen relativ weit verbreitet ist. 700 sauber gezeichnete, erkennbare PNG-Icons in TrueColor. Man kann praktisch jede (Arbeits-)Anwendung mit diesem Set vollständig mit Icons versorgen.&lt;br /&gt;
|[http://creativecommons.org/licenses/by/2.5/ CC-BY 2.5], [http://creativecommons.org/licenses/by/3.0/ CC-BY 3.0]&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Texturerstellung ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://3d.diehlsworld.de/textures/index.htm 3d.diehlsworld.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet ihr kurze aber inhaltlich reiche Tutorials zu der Frage &amp;quot;Wie erstelle ich XXXXX-Texturen&amp;quot;. Dabei reicht die Palette von Untergrundtexturen wie Gras, Sand , Fels und Wasser (und Kombinationen dieser) bis hin zu Blitzen und Partikeln. Als Programm wird hier Photoshop verwendet.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gimps.de/gimp/textur-muster/ gimps.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Schritt für Schritt Anleitungen wie man mit Gimp verschiedene Texturen erstellt.&lt;br /&gt;
|-&lt;br /&gt;
|[http://cbt.k090999.de/gimp.php#texturen k090999.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Gimptutorials zum Erstellen verschiedene Texturen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Modelle / 3D-Grafiken ==&lt;br /&gt;
&lt;br /&gt;
=== Blender ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://blendpolis.de/f/viewtopic.php?t=5786 Blendpolis]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Ein Thread im Forum von [http://blendpolis.de Blendpolis] in dem '''sehr''' viele Tutorials aufgelistet sind&lt;br /&gt;
|-&lt;br /&gt;
|[http://blendpolis.de/f/article_cat.php?fldAuto=7 Blendpolis]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Eigentliche Tutorial Seite von [http://blendpolis.de Blendpolis] die Auswahl ist hier aber nicht so groß&lt;br /&gt;
|-&lt;br /&gt;
|[http://wikivid.com/index.php/Blender Blender at wikivid.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Linksammlung von Blender Video Tutorials &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.blender.org/education-help/tutorials/getting-started/ blender3d.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Auch die Heimatseite von Blender bietet viele Tutorials unter anderm auch Video Tuorials&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.Blenderunderground.com Blenderunderground]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| '''sehr gute''' Video-Tutorials&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sounds ==&lt;br /&gt;
&lt;br /&gt;
===Musik===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.jamendo.com/ Jamendo.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Viele Künstler stellen hier ihre Alben unter einer Creative Commons Lizenz online. Man kann dort die Künstler auch kontaktieren und fragen ob man ihre Musik nutzen kann. Taugt außerdem als Radio! ;)&lt;br /&gt;
|-&lt;br /&gt;
|[http://incompetech.com/m/c/royalty-free/ Incompetech.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Viele sehr schön gemacht instrumentale Musik aus allen möglichen Genres. Sie ist frei verwenderbar, wenn man den Macher der Musik (Kevin MacLeod) in seinem Programm erwähnt. Aber das hat er auch verdient. Folgende Programme nutzen beispielsweise (auch) Musik von incompetech.com:&lt;br /&gt;
* OpenParty&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Soundeffekte===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.freesound.org/ freesound.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Diverse Sounds unter [http://www.creativecommons.org/ CreativeCommons] Lizenzen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Soundprogramme===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://audacity.sourceforge.net/?lang=de Sourceforgeseite von Audacity]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein einfaches, freies Programm um Sounddateien zu bearbeiten. Man kann es auch nutzen um Soundeffekte neu zu erstellen, indem man z.B. ein Geräusch mit dem Mikrofon aufnimmt und einige Effekt anwendet, um es passender und nicht mehr aufgenommen klingen zu lassen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://lmms.sourceforge.net/ LMMS]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|LMMS (Linux MultiMedia Studio) ist ein OpenSource+Freeware Composer-Programm ähnlich zum bekannteren aber auch teuren CuBase(r). Trotz des Namens auch für Windows erhältlich.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Tutorial_glsl&amp;diff=25496</id>
		<title>Tutorial glsl</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Tutorial_glsl&amp;diff=25496"/>
				<updated>2012-03-15T17:06:10Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: /* Texturenzugriffe */ Hinweis auf Unterschied zwischen Texturnamen und Texturunit eingefügt.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Einleitung=&lt;br /&gt;
Hallo und willkommen bei meiner &amp;quot;Einführung&amp;quot; in GLSL (kurz für &amp;quot;Open'''GL''' '''S'''hading '''L'''anguage&amp;quot;), der offiziellen Hochlevel-Shadersprache von OpenGL. In diesem umfangreichen Dokument werde ich versuchen, sowohl auf die Nutzung (sprich das Laden und Anhängen von Shadern im Quellcode), als auch auf die Programmierung von Shadern selbst einzugehen, inklusive aller Sprachelemente der OpenGL Shadersprache. Es wird also auch recht viele Informationen zu der C-ähnlichen Programmstruktur und den von GLSL angebotenen Variablen und Attributen gehen. Am Ende dieser Einführung sollten alle die, die sich für das Thema interessieren, in der Lage sein, zumindest einfach Shader zu schreiben und auch in ihren Programmen zu nutzen. Ausserdem soll dieses Dokument gleichzeitig als ein deutsches &amp;quot;Pendant&amp;quot; zu den von Khronoes veröffentlichten Shaderspezifikationen, und damit als alltägliches Nachschlagewerk, dienen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Vorkenntnisse==&lt;br /&gt;
Wie auch schon mein ARB_VP-Tutorial richtet sich auch diese Einführung aufgrund ihrer Thematik eher an die fortgeschritteneren GL-Programmierer und neben sehr guten GL-Kenntnissen sollten sich alle, die sich daran versuchen wollen, mit den technischen Hintergründen der GL, wie z.B. dem Aufbau der Renderpipeline auskennen. Weiterhin sind C-Kenntnisse absolut erforderlich, da die Shader ja in einer an ANSI-C angelehnten Syntax geschrieben werden. Auch Begriffsdefinitionen zu Vertex oder Fragment werden zum Verständis dieser Einführung benötigt. Wer also noch am Anfang seiner GL-Karriere steht, dem wird dieses Dokument nicht viel nützen. Ganz nebenbei solltet ihr auch noch eine gehörige Portion Zeit (am besten nen kompletten Nachmittag) mitbringen, denn die folgende Kost ist nicht nur umfangreich, sondern auch manchmal recht schwer verdaulich.&lt;br /&gt;
&lt;br /&gt;
=Was ist GLSL?=&lt;br /&gt;
Wie Eingangs kurz angesprochen handelt es sich bei GLSL um eine Shadersprache, also um eine Hochsprache, in der man die programmierbaren Teile aktueller Grafikbeschleuniger nach eigenem Belieben programmieren kann. Sie stellt quasi den Nachfolger zu den in Assembler geschriebenen Vertex- und Fragmentprogrammen ([[GL_ARB_vertex_program]]/[[GL_ARB_fragment_program]]) dar und basiert auf ANSI C, erweitert um Vektor- und Matrixtypen sowie einige C++-Mechanismen.&lt;br /&gt;
&lt;br /&gt;
Die in GLSL geschriebenen Programme nennen sich, angepasst an die Terminologie von RenderMan und DirectX, [[Shader]] (im Gegensatz zu &amp;quot;Programme&amp;quot; bei ARB_VP/FP) und werden entweder auf Eckpunkte (VertexShader), Fragmente (FragmentShader) angewendet, oder (neuerdings, ab Shadermodell 4.0) auch genutzt um Geometrie zu erstellen (Geometryshader). Andere Teile der Renderpipeline (z.B. die Rasterisierung) können momentan noch nicht durch Shader beeinflusst werden, was allerdings in Zukunft noch kommen kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Voraussetzungen==&lt;br /&gt;
&lt;br /&gt;
GLSL wurde 2005 mit OpenGL 1.5 eingeführt. Während es in Sachen Treiber- und Hardwareunterstützung anfänglich noch dürftig aussah, wird man inzwischen keine Grafikkarte mehr kaufen können die nicht zumindest Vertex- und Fragmentshader beherscht. Geometrieshader hingegen sind relativ neu und wurden erst mit Shadermodell 4.0 eingeführt, hier ist es also unter Umständen noch möglich dass selbst aktuelle Treiber/Karten keine Geometrieshader beherrschen.&lt;br /&gt;
&lt;br /&gt;
Natürlich benötigt man auch einen passenden OpenGL-Header der die für GLSL nötigen Funktionen exportiert. Ich verweise dazu auf unseren eigenen OpenGL-Header [[DGLOpenGL.pas]], der peermanent auf dem aktuellsten Stand gehalten wird und auch Support für Geometrieshader mitbringt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Extensions==&lt;br /&gt;
&lt;br /&gt;
Die GL-Shadersprache &amp;quot;besteht&amp;quot; in ihrer aktuellen Version aus folgenden Extensions, fürs Verständnis wäre es nicht schlecht, wenn ihr euch zumindest die Einleitungen dazu durchlest :&lt;br /&gt;
* [[GL_ARB_shader_objects]] ([http://oss.sgi.com/projects/ogl-sample/registry/ARB/shader_objects.txt Originalspezifikation])&lt;br /&gt;
: Definiert die API-Aufrufe, die zum Erstellen, Kompilieren, Linken, Anhängen und Aktivieren von Shader- und Programmobjekten nötig sind. &lt;br /&gt;
* [[GL_ARB_vertex_shader]] ([http://oss.sgi.com/projects/ogl-sample/registry/ARB/vertex_shader.txt Originalspezifikation])&lt;br /&gt;
: Fügt der OpenGL Programmierbarkeit auf Vertexebene hinzu. &lt;br /&gt;
* [[GL_ARB_fragment_shader]] ([http://oss.sgi.com/projects/ogl-sample/registry/ARB/fragment_shader.txt Originalspezifikation])&lt;br /&gt;
: Fügt der OpenGL Programmierbarkeit auf Fragmentebene hinzu. &lt;br /&gt;
* [[GL_ARB_shading_language_100]] ([http://oss.sgi.com/projects/ogl-sample/registry/ARB/shading_language_100.txt Originalspezifikation])&lt;br /&gt;
: Gibt die unterstützte Version von glSlang an, momentan 1.00.&lt;br /&gt;
&lt;br /&gt;
'''Hinweis''' : Seit OpenGL 2.0 ist GLSL Teil des Kerns. Wenn die Karte also OpenGL 2.0 unterstützt, dann unterstützt sie auch (zumindest in Software) Vertex- und Fragmentshader.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sprachversionen==&lt;br /&gt;
&lt;br /&gt;
Neben der OpenGL-Version und dem vorhandenen Shadermodell (das eher an DirectX ausgerichtet ist), bietet auch GLSL verschiedene Versionen, die entsprechend erweiterte Funktionalität bieten.&lt;br /&gt;
&lt;br /&gt;
Auslesen kann man die verfürgbare GLSL-Version wie folgt:&lt;br /&gt;
&lt;br /&gt;
 glGetString(GL_SHADING_LANGUAGE_VERSION)&lt;br /&gt;
&lt;br /&gt;
Erst ab Version 1.4. kann man davon ausgehen dass GLSL alle Features des Shadermodells 4.0 liefert, ab 1.3 grob gesagt Shadermodell 3.0 (bei GLSL lässt sich das leider nicht so leicht unterteilen).&lt;br /&gt;
&lt;br /&gt;
Ausserdem kann man seinem Shader eine Versionsnummer verpassen. Sollte der Shadercompiler (also Treiber bzw. Hardware) diese Version nicht unterstützen, gibt dieser eine Fehlermeldung heraus:&lt;br /&gt;
&lt;br /&gt;
 #version 1.50 &lt;br /&gt;
&lt;br /&gt;
''(Hinweis: Muss am Anfang des Shaders stehen)''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objekte==&lt;br /&gt;
&lt;br /&gt;
Im Zuge der Vereinheitlichung der GL wird immer häufiger in Objekte gekapselt, deren API dann auch aneinander angelehnt ist. Ziel ist, dabei die Programmierung der GL uniform zu machen, so dass z.B. zwischen dem Erstellen und Verwalten eines Vertex-Buffer-Objektes oder eines Shader-Objektes kaum ein Unterschied besteht (demnächst kommen dann auch Pixel-Buffer-Objekte dazu). Mit glSlang wurden dann im Zuge dieser Aktion zwei neue Objekte eingeführt, deren Definition ihr euch unbedingt einprägen solltet:&lt;br /&gt;
&lt;br /&gt;
* '''Programmobjekt'''&lt;br /&gt;
:Ein Objekt, an das die Shader später angebunden werden. Bietet Funktionalität zum Linken der Shader und prüft dabei die Kompatibilität zwischen Vertex- und Fragmentshader.&lt;br /&gt;
&lt;br /&gt;
* '''Shaderobjekt'''&lt;br /&gt;
:Dieses Objekt verwaltet den Quellcodestring eines Shaders und ist entweder vom Typ '''GL_VERTEX_SHADER''', '''GL_FRAGMENT_SHADER_ARB''' oder '''GL_GEOMETRY_SHADER'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ressourcen==&lt;br /&gt;
&lt;br /&gt;
Die Shadersprache ist keinesfalls final und es wurden bereits diverse Ausdrücke für zukünftige Verwendung reserviert, denn ein Ziel bei ihrer Entwicklung war es, sie so zukunftsorientiert zu gestalten, dass auch Grafikkarten der nächsten und übernächsten Generation voll ausgenutzt werden können. Damit einher geht die Tatsache, dass sich die Spezifikationen in Zukunft ändern/erweitern werden, weshalb man da immer einen Blick hineinwerfen sollte. Die Anlaufstelle dafür ist die [http://www.opengl.org/documentation/specs/ Spezifikationenliste auf OpenGL.org].&lt;br /&gt;
&lt;br /&gt;
=GLSL im Programm=&lt;br /&gt;
Bevor wir uns mit der Syntax von glSlang beschäftigen, zeige ich euch erstmal, wie ihr Shader in euer Programm einbindet und nutzt. Warum das zuerst? Ganz einfach deshalb, weil ihr dann das, was ihr im glSlang-Syntaxteil lernt, direkt in eurer Testanwendung verwenden könnt. Hoffe diese Entscheidung klingt logisch und findet Anklang.&lt;br /&gt;
&lt;br /&gt;
Zuerst benötigen wir natürlich unsere Objekte. Zum einen ein ''Programmobjekt'', an das unsere Shader gebunden werden, und zwei ''Shaderobjekte'', die den Quellcode unseres Vertex bzw. Fragment Shaders aufnehmen. Dazu wurde eigens der neue &amp;quot;Datentyp&amp;quot; {{INLINE_CODE|glHandle}} eingeführt, der ein Objekthandle repräsentiert. Wir deklarieren also wie folgt :&lt;br /&gt;
&lt;br /&gt;
 ProgramObject        : GLhandle;&lt;br /&gt;
 VertexShaderObject   : GLhandle;&lt;br /&gt;
 FragmentShaderObject : GLhandle;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nach dieser Deklaration können wir dann damit beginnen unsere Objekte zu erstellen. Den Anfang macht das Programmobjekt :&lt;br /&gt;
&lt;br /&gt;
 ProgramObject        := glCreateProgram;&lt;br /&gt;
&lt;br /&gt;
Die Funktion [[glCreateProgram]] erstellt uns oben ein leeres Programmobjekt und gibt ein gültiges Handle darauf zurück.&lt;br /&gt;
&lt;br /&gt;
Weiter gehts mit der Erstellung unseres Vertex bzw. Fragment Shaders :&lt;br /&gt;
&lt;br /&gt;
 VertexShaderObject   := glCreateShader(GL_VERTEX_SHADER);&lt;br /&gt;
 FragmentShaderObject := glCreateShader(GL_FRAGMENT_SHADER);&lt;br /&gt;
&lt;br /&gt;
[[glCreateShader]] dient zur Generierung eines leeren Shaderobjektes. Momentan unterstützt diese Funktion VertexShader und FragmentShader.&lt;br /&gt;
&lt;br /&gt;
Nachdem wir nun also zwei gültige Shaderobjekte haben, wollen wir diese auch mit entsprechendem Quellcode versorgen :&lt;br /&gt;
&lt;br /&gt;
 glShaderSource(VertexShaderObject, 1, @ShaderText, @ShaderLength);&lt;br /&gt;
 glShaderSource(FragmentShaderObject, 1, @ShaderText, @ShaderLength);&lt;br /&gt;
&lt;br /&gt;
Via [[glShaderSource]] setzen wir den Quellcode eines Shaderobjektes ''komplett'' neu. Zum Laden des Quellcodes bietet sich unter Delphi übrigens eine TStringList geradezu an. Es sollte beachtet werden, dass der Quellcode zu diesem Zeitpunkt ''nicht geparst'' wird, also keine Fehleruntersuchung stattfindet.&lt;br /&gt;
&lt;br /&gt;
Der Quellcode wurde jetzt also an unsere Shaderobjekte gebunden und sollte dann natürlich auch noch kompiliert werden :&lt;br /&gt;
&lt;br /&gt;
 glCompileShader(VertexShaderObject);&lt;br /&gt;
 glCompileShader(FragmentShaderObject);&lt;br /&gt;
&lt;br /&gt;
Der glSlang-Compiler des Treibers wird bei einem Aufruf von [[glCompileShader]] versuchen, unsere Shader zu kompilieren. Sofern diese keine Fehler aufweisen, sollte dies auch erfolgreich sein. Wenn nicht, dann spuckt uns der Shadercompiler (je nach Treiber) recht detaillierte Infos aus. Wie man an diese Infos kommt könnt ihr gleich nachlesen.&lt;br /&gt;
&lt;br /&gt;
Wenn unsere Shader dann kompiliert werden konnten, ist es Zeit, diese an unser anfangs erstelltes Programmobjekt anzuhängen :&lt;br /&gt;
&lt;br /&gt;
 glAttachShader(ProgramObject, VertexShaderObject);&lt;br /&gt;
 glAttachShader(ProgramObject, FragmentShaderObject);&lt;br /&gt;
&lt;br /&gt;
Nachdem die Shaderobjekte nun an das Programmobjekt angehängt wurden, werden diese nicht mehr benötigt und ihre Resourcen können freigegeben werden :&lt;br /&gt;
&lt;br /&gt;
 glDeleteShader(VertexShaderObject);&lt;br /&gt;
 glDeleteShader(FragmentShaderObject);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Schluß müssen wir dann noch unsere ans Programmobjekt gebundenen Shader linken :&lt;br /&gt;
&lt;br /&gt;
 glLinkProgram(ProgramObject);&lt;br /&gt;
&lt;br /&gt;
Während [[glCompileShader]] unsere Shader auf syntaktische Fehler innerhalb ihres lokalen Raums geprüft hat, werden beim Linken durch [[glLinkProgram]] die angehangenen Shader zu einem ausführbaren Shader gelinkt. Folgende Bedingungen führen zu einem '''Linkerfehler''':&lt;br /&gt;
&lt;br /&gt;
* Die Zahl der von der Implementation unterstützten Attributvariablen wurde überschritten&lt;br /&gt;
* Der Speicherplatz für Uniformvariablen wurde überschritten&lt;br /&gt;
* Die Zahl der von der Implementation angebotenen Sampler wurde überschritten&lt;br /&gt;
* Die main-Funktion fehlt&lt;br /&gt;
* Die Liste der Varying-Variablen des Vertexshaders stimmt nicht mit der des Fragmentshaders überein&lt;br /&gt;
* Funktions- oder Variablenname nicht gefunden&lt;br /&gt;
* Eine gemeinsame Globale ist mit unterschiedlichen Werten oder Typen initialisiert worden&lt;br /&gt;
* Zwei Sampler unterschiedlichen Typs zeigen auf die selbe Textureneinheit&lt;br /&gt;
* Ein oder mehrere angehangene(r) Shader wurden nicht erfolgreich kompiliert&lt;br /&gt;
&lt;br /&gt;
Die Nutzung von glSlang im eigenen Programm ist wie oben erkennbar also nicht wirklich schwer und innerhalb kurzer Zeit realisiert. Natürlich ist es auch möglich z.B. nur einen VertexShader oder nur einen FragmentShader an ein Programmobjekt zu binden.&lt;br /&gt;
&lt;br /&gt;
Noch eine kleine Notiz zum Löschen der Shader mittel [[glDeleteShader]] : Da Shader(objekte) einen Referenzzähler besitzen und erst gelöscht werden wenn diese nirgendwo mehr benötigt werden, ist es nicht falsch diese vor dem Linkvorgang zu löschen. Allerdings spielt es letztendlich keine Rolle ob die Löschanweisung vorher der nachher ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Fehlererkennung==&lt;br /&gt;
Natürlich wird es ohne Fehlerausgabe recht schwer, etwaige Probleme in einem Vertex- oder Fragmentshader zu finden. Doch auch in diesem Bereich wurde glSlang recht gut durchdacht und es wurden zwei Funktionen eingeführt, welche im Zusammenspiel die Fehlersuche recht einfach machen, nämlich [[glGetShaderInfoLog]] und [[glGetShader]] mit dem Argument {{INLINE_CODE|GL_OBJECT_INFO_LOG_LENGTH}}. Erstere Funktion liefert uns einen Logstring, während uns letztere Funktion dessen Länge angibt. Der Logstring wird verändert, sobald ein Shader kompiliert oder ein Programm gelinkt wird.&lt;br /&gt;
&lt;br /&gt;
Um die Ausgabe dieses Logs so einfach wie möglich zu machen, bietet es sich an beide in einer einfach Funktion unterzubringen :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;pascal&amp;quot;&amp;gt;function glSlang_GetInfoLog(pShader: GLHandleARB): String;&lt;br /&gt;
var&lt;br /&gt;
  blen, slen: GLInt;&lt;br /&gt;
  InfoLog: PGLCharARB;&lt;br /&gt;
&lt;br /&gt;
begin&lt;br /&gt;
  glGetShaderiv(glObject, GL_INFO_LOG_LENGTH , @blen);&lt;br /&gt;
  if blen &amp;gt; 1 then&lt;br /&gt;
  begin&lt;br /&gt;
    GetMem(InfoLog, blen * SizeOf(GLCharARB));&lt;br /&gt;
    glGetShaderInfoLog(pShader, blen, slen, InfoLog);&lt;br /&gt;
    Result := PChar(InfoLog);&lt;br /&gt;
    Dispose(InfoLog);&lt;br /&gt;
  end;&lt;br /&gt;
end;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Funktion ist recht leicht erklärt : Zuerst lassen wir uns über {{INLINE_CODE|glGetShaderiv}} mitteilen wie lang der aktuelle Infolog ist. Sollte dort tatsächlich etwas drinstehen (blen &amp;gt; 1), dann lassen wir uns dessen Inhalt via {{INLINE_CODE|glGetShaderInfoLog}} in {{INLINE_CODE|InfoLog}} ausgeben und liefern diesen als Ergebnis zurück.&lt;br /&gt;
&lt;br /&gt;
Wie bereits gesagt wird nur nach dem Kompilieren eines Shaders bzw. dem Linken eines Programmobjektes ein Infolog erstellt. Es bietet sich dadurch an, direkt danach einen solchen Aufruf zu machen :&lt;br /&gt;
&lt;br /&gt;
 glCompileShader(VertexShaderObject);&lt;br /&gt;
 ShowMessage(glSlang_GetInfoLog(VertexShaderObject));&lt;br /&gt;
&lt;br /&gt;
Wenn unser Vertex Shader komplett fehlerfrei kompiliert werden konnte, dann sehen wir als Ergebnis nur einen leeren Dialog. Ist dies nicht der Fall, so werden wir vom Treiber mit recht detaillierten Fehlerinformationen &amp;quot;belohnt&amp;quot;, z.B. so :&lt;br /&gt;
&lt;br /&gt;
[[Bild:GLSL_error_vshader.jpg]]&lt;br /&gt;
&lt;br /&gt;
Auch das Infolog nach dem Linken des Programmobjektes dürfte, selbst wenn keine Fehler vorkommen, recht interessant sein, das sieht dann nämlich so aus :&lt;br /&gt;
&lt;br /&gt;
[[Bild:GLSL info programobject.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wie zu sehen, wird uns nach dem erfolgreichen Linken auch gesagt, ob und welcher Shader in Hardware bzw. Software läuft. Für Debuggingzwecke sicherlich eine mehr als brauchbare Information.&lt;br /&gt;
&lt;br /&gt;
==Shader benutzen==&lt;br /&gt;
Um den Shader auch für die nächsten Polygone zu benutzen oder Uniformparameter übergeben zu können, ruft man die Funktion&lt;br /&gt;
 glUseProgramt(ProgramObject);&lt;br /&gt;
um alle Shader zu deaktivieren, ruft man dieselbe Funktion mit dem Parameter 0.&lt;br /&gt;
&lt;br /&gt;
==Parameterübergabe==&lt;br /&gt;
Uniformparameter (mehr dazu später) stellen die Schnittstelle zwischen eurem Programm und dem Shader dar, werden also genutzt um Daten aus dem Programm heraus an einen Shader zu übergeben. Zur Übergabe dieser Parameter bietet OpenGL diverse Funktionen, die alle Abkömmlinge von [[glUniform]] sind. Während mit {{INLINE_CODE|glUniform4f}} z.B. ein Vier-Komponentenvektor an das Programmobjekt übergeben wird, kann man mittels {{INLINE_CODE|glUniformMatrix4fv}} ganze Matrizen schnell und einfach übergeben. Ausserdem gibt es nun die Möglichkeit Uniformparameter direkt über ihren Namen, statt wie unter ARB_FP/VP über einen festen Index zu adressieren. Die Funktion [[glGetUniformLocationARB]] gibt anhand des übergebenen Parameternamens dessen Position zurück. Man kann also ganz einfach über den Namen drauf zugreifen :&lt;br /&gt;
&lt;br /&gt;
 glUniform3f(glGetUniformLocation(ProgramObject, PGLCharARB('LightPosition')), LPos[0], LPos[1], LPos[2]);&lt;br /&gt;
 glUniform1i(glGetUniformLocation(ProgramObject, PGLCharARB('texSamplerTMU3')), 3);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wichtig ist hier, das man je nach Parametertyp auch die passende Anzahl von Argumenten übergibt. Also für einen 4-Komponenten Floatvektor {{INLINE_CODE|glUniform4fARB}} und für einen einfachen Integerwert (z.B. Textureinheit für einen Sampler) glUnifrom1iARB. Auch nicht vergessen dürft ihr, das die Namen der Parameter genauso wie im Shader geschrieben werden müssen, also Groß- und Kleinschreibung beachtet werden muß.&lt;br /&gt;
&lt;br /&gt;
=Die Shadersprache=&lt;br /&gt;
&lt;br /&gt;
Nachdem wir uns mit der Einbindung der glSlang-Shader in unser Programm beschäftigt haben, wollen wir uns in den folgenden Kapiteln um die Sprachelemente von glSlang kümmern. Wie schon gesagt basiert glSlang auf ANSI-C, wurde allerdings um speziell auf den Zielbereich angepasste Vektor- und Matrixtypen und einige C++-Features wie das freie deklarieren von Variablen an jeder Stelle und das Funktionsüberladen auf Basis des Argumenttyps erweitert. Wer sich ein wenig mit C/C++ auskennt sollte also in der nun folgenden Materie keine Probleme bekommen.&lt;br /&gt;
&lt;br /&gt;
'''Obligatorische Hinweise für verwöhnte Delphi-Nutzer : '''&lt;br /&gt;
*Wie von C/C++ her gewohnt, spielt auch in glSlang die Groß- und Kleinschreibung eine wichtige Rolle, also bitte achtet darauf. gl_Position ist eine komplett andere Variable als z.B. gl_position.&lt;br /&gt;
*Es findet keine automatische Typenkonvertierung statt. Das bedeutet also das float MyFloat = 1 ungültig ist und es in dem Falle float MyFloat = 1.0 heissen muss. Typecasts müssen also immer manuell stattfinden, z.B. MyFloat = float(MyInt).&lt;br /&gt;
&lt;br /&gt;
'''Kleine Programmstrukturkunde für C-Unkundige :'''&amp;lt;br&amp;gt;&lt;br /&gt;
Da sicherlich einige Delpher nie richtig was mit C gemacht haben, zeige ich mal anhand eines kleinen Beispieles (das auf keinen Fall nen brauchbaren Shader darstellt) den grundlegenden Aufbau eines glSlang-Shaders, der natürlich dem Aufbau eines C-Programmes stark ähnelt :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
uniform vec4 VariableA;&lt;br /&gt;
float VariableB;&lt;br /&gt;
vec3  VariableC;&lt;br /&gt;
const float KonstanteA = 256.0;&lt;br /&gt;
&lt;br /&gt;
float MyFunction(vec4 ArgumentA)&lt;br /&gt;
{&lt;br /&gt;
    float FunktionsVariableA = float(5.0);&lt;br /&gt;
&lt;br /&gt;
    return float(ArgumentA * (FunktionsVariableA + KonstanteA));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Ich bin ein Kommentar&lt;br /&gt;
/* Und ich auch */&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;&lt;br /&gt;
    gl_TexCoord[0] = gl_MultiTexCoord0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sieht doch recht bekannt aus, unser Programmaufbau. Delphi und C haben ja so einige Grundlagen gleich, darunter auch der ungefähre Programmaufbau. Ausserhalb jeglicher Funktionen legen wir am Programmanfang unsere Variablen, Konstanten und Attribute fest, die dann ''global'' nutzbar sind, also in jeder Funktion.&lt;br /&gt;
&lt;br /&gt;
Darunter deklarieren wir dann eine kleine Funktion. Wie auch bei den Variablendeklarationen wird hier der Rückgabetyp nicht wie bei Pascal nach dem Funktionsnamen untergebracht, sondern davor. Innerhalb der Funktion können dann wieder Variablen deklariert werden, die dann allerdings ''lokal'', also nur in dieser Funktion nutzbar sind. Vorteil dieser Deklaration ist die Tatsache, dass je nach Grafikkarte nur bestimmt viele globale Variablen deklariert werden können. Wenn möglich sollte man also mit lokalen Vorlieb nehmen. Unsere Funktion gibt dann natürlich noch via return einen Wert zurück, ''was gemacht werden muss'', sofern man diese nicht als void deklariert hat (entspräche dann einer Prozedur in Pascal). Wird dies nicht getan, so spuckt der Compiler einen Fehler aus.&lt;br /&gt;
&lt;br /&gt;
Auch wichtig sind natürlich Kommentare. Erste Variante (Doppelslash) ist auch in der Pascalwelt verfügbar und kommentiert eine einzelne Zeile aus. Die Variante darunter kann man für Kommentarblöcke nutzen (/* .. */) und entspricht den Kommentaren in geschweiften Klammern in Delphi.&lt;br /&gt;
&lt;br /&gt;
Danach kommt dann die '''wichtigste Funktion''' des Shaders, nämlich '''main''', die in keinem Shader fehlen darf. Sie stellt quasi den Programmkörper dar und ist oft auch die einzige Funktion in einem Shader. Sie erhält weder ein Argument, noch gibt sie einen Wert zurück.&lt;br /&gt;
&lt;br /&gt;
Soviel also zum grundlegenden Aufbau eines Shader. Hoffe das jetzt alle die in C nicht so bewandert sind damit klar kommen, und dann bald ihre ersten glSlang-Shader schreiben können.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Datentypen==&lt;br /&gt;
&lt;br /&gt;
Obwohl einige Datentypen aus C übernommen wurden, sieht man der Typenliste an, das diese speziell auf den 3D-Bereich zugeschnitten wurde. Variablen müssen vor ihrer Nutzung eindeutig deklariert sein, Typecasting erfolgt über Konstruktoren (dazu später mehr). Folgende Datentypen stehen sowohl im Vertex- als auch Fragmentshader zur Verfügung :&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}}&lt;br /&gt;
!Datentyp  	&lt;br /&gt;
!Erklärung&lt;br /&gt;
|-&lt;br /&gt;
|void 	&lt;br /&gt;
|Für Funktionen die keinen Wert zurückgeben&lt;br /&gt;
|-&lt;br /&gt;
|bool 	&lt;br /&gt;
|Konditionaler Typ, entweder true (wahr) oder false (falsch)&lt;br /&gt;
|-&lt;br /&gt;
|int 	&lt;br /&gt;
|Vorzeichenbehafteter Integerwert&lt;br /&gt;
|-&lt;br /&gt;
|float 	&lt;br /&gt;
|Fließkommaskalar mit Singlegenauigkeit (32 Bit)&lt;br /&gt;
|-&lt;br /&gt;
|vec2 	&lt;br /&gt;
|2-Komponenten Fließkommavektor&lt;br /&gt;
|-&lt;br /&gt;
|vec3 	&lt;br /&gt;
|3-Komponenten Fließkommavektor&lt;br /&gt;
|-&lt;br /&gt;
|vec4 	&lt;br /&gt;
|4-Komponenten Fließkommavektor&lt;br /&gt;
|-&lt;br /&gt;
|bvec2 	&lt;br /&gt;
|2-Komponenten Booleanvektor&lt;br /&gt;
|-&lt;br /&gt;
|bvec3 	&lt;br /&gt;
|3-Komponenten Booleanvektor&lt;br /&gt;
|-&lt;br /&gt;
|bvec4 	&lt;br /&gt;
|4-Komponenten Booleanvektor&lt;br /&gt;
|-&lt;br /&gt;
|ivec2 	&lt;br /&gt;
|2-Komponenten Integervektor&lt;br /&gt;
|-&lt;br /&gt;
|ivec3 	&lt;br /&gt;
|3-Komponenten Integervektor&lt;br /&gt;
|-&lt;br /&gt;
|ivec4 	&lt;br /&gt;
|4-Komponenten Integervektor&lt;br /&gt;
|-&lt;br /&gt;
|mat2 	&lt;br /&gt;
|2x2 Fließkommamatrix&lt;br /&gt;
|-&lt;br /&gt;
|mat3 	&lt;br /&gt;
|3x3 Fließkommamatrix&lt;br /&gt;
|-&lt;br /&gt;
|mat4 	&lt;br /&gt;
|4x4 Fließkommamatrix&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die sampler-Typen stellen eine besondere Klasse zum Zugriff auf Texturen dar, und werden im Kapitel 6.7 genauer erklärt, inklusive einiger Anwendungsbeispiele.&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}}&lt;br /&gt;
!Datentyp  	&lt;br /&gt;
!Erklärung&lt;br /&gt;
|-&lt;br /&gt;
|sampler1D 	&lt;br /&gt;
|Zugriff auf 1D-Textur&lt;br /&gt;
|-&lt;br /&gt;
|sampler2D 	&lt;br /&gt;
|Zugriff auf 2D-Textur&lt;br /&gt;
|-&lt;br /&gt;
|sampler3D 	&lt;br /&gt;
|Zugriff auf 3D-Textur&lt;br /&gt;
|-&lt;br /&gt;
|samplerCube 	&lt;br /&gt;
|Zugriff auf Cubemap&lt;br /&gt;
|-&lt;br /&gt;
|sampler2DRect 	&lt;br /&gt;
|Zugriff auf Texturen die nicht 2^n * 2^n entsprechen (&amp;quot;non power-of-two&amp;quot;, NPOT)&lt;br /&gt;
|-&lt;br /&gt;
|sampler1DShadow 	&lt;br /&gt;
|Zugriff auf 1D-Tiefentextur mit Vergleichsoperation&lt;br /&gt;
|-&lt;br /&gt;
|sampler2DShadow 	&lt;br /&gt;
|Zugriff auf 2D-Tiefentextur mit Vergleichsoperation&lt;br /&gt;
|-&lt;br /&gt;
|samplerCubeShadow&lt;br /&gt;
|Zugriff auf Tiefentextur in einer Cubemap (z.b. für omni-diretionale Lichtquellen)&lt;br /&gt;
|-&lt;br /&gt;
|sampler2DRectShadow&lt;br /&gt;
|Zugriff auf 2D-NPOT-Tiefentextur &lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|sampler1DArray&lt;br /&gt;
|Zugriff auf ein array aus 1D-Texturen &lt;br /&gt;
|-&lt;br /&gt;
|sampler2DArray&lt;br /&gt;
|Zugriff auf ein array aus 2D-Texturen &lt;br /&gt;
|-&lt;br /&gt;
|sampler1DArrayShadow&lt;br /&gt;
|Zugriff auf ein array aus 1D-Tiefentexturen &lt;br /&gt;
|-&lt;br /&gt;
|sampler2DArrayShadow&lt;br /&gt;
|Zugriff auf ein array aus 2D-Tiefentexturen &lt;br /&gt;
|-&lt;br /&gt;
|samplerBuffer&lt;br /&gt;
|Zugriff auf eine Puffertextur (1D-Texutr zum Speichern von Pufferobjekten)&lt;br /&gt;
|-&lt;br /&gt;
|sampler2DMS&lt;br /&gt;
|Zugriff auf eine 2D-Textur mit mehreren Samplepunkten (z.b. für Multisampling)&lt;br /&gt;
|-&lt;br /&gt;
|sampler2DMSArray&lt;br /&gt;
|Zugriff auf einarray aus 2D-Textur mit mehreren Samplepunkten (z.b. für Multisampling)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arrays===&lt;br /&gt;
&lt;br /&gt;
Natürlich unterstützt glSlang auch Arrays, die wie in C deklariert werden und deren Index bei 0 beginnt. Folgendes Array im Shader :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
float temp[3];&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
beginnt also bei Index 0 und endet bei Index 2. Im Gegensatz zu C lassen sich Arrays in glSlang allerdings ''nicht bei der Initialisierung vorbelegen''. Wenn ein Array als Parameter einer Funktion deklariert wird, so darf dieses keine Dimensionierung erhalten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Strukturen===&lt;br /&gt;
&lt;br /&gt;
Neu ggü. ARB_FP/VP ist nun auch die Möglichkeit, Strukturen in einem Shader zu deklarieren. Vor allem die Übersicht komplexerer Shader kann dadurch stark verbessert werden. Strukturen werden wie gewohnt mit dem Schlüsselwort {{INLINE_CODE|struct}} eingeleitet und können dann zur Typisierung von Variablen genutzt werden. Folgendes Beispiel dürfte die Nutzung verdeutlichen :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
struct light&lt;br /&gt;
{&lt;br /&gt;
    bool active;&lt;br /&gt;
    float intensity;&lt;br /&gt;
    vec3 position;&lt;br /&gt;
    vec3 color;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Im Shader können dann neue Variablen von diesem Typ ganz einfach deklariert werden :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
 light LightSource[3];&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Der Zugriff auf die Elemente der Struktur erfolgt dann wie gewohnt über den Punkt :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
LightSource[i].position = vec3(1.0, 1.0, 5.0);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Typenqualifzierer==&lt;br /&gt;
&lt;br /&gt;
Zusätzlich zur Typendeklaration kann eine Variable noch einen Typenqualifizerer vorangestellt bekommen, der an den Anfang der Deklaration gehört.&lt;br /&gt;
&lt;br /&gt;
* '''const'''&lt;br /&gt;
: Festgelegte (nur lesen) Konstante bzw. nur lesbarer Funktionsparameter.&lt;br /&gt;
&lt;br /&gt;
* '''uniform'''&lt;br /&gt;
: Ein den ganzen Shader über gleichbleibender Wert, der eine Schnittstelle zwischen dem Shader und der OpenGL-Anwendung darstellt. Ein Uniformwert wird in der Hauptanwendung an den entsprechenden Shader übergeben und kann dort dann genutzt werden.&lt;br /&gt;
&lt;br /&gt;
* '''attribute'''&lt;br /&gt;
: Nur lesbare Werte die eine Verbindung zwischen dem Shader und der OpenGL-VertexAPI darstellen (z.B. VertexParameter eines VertexArrays). Natürlich nur in einem Vertex Shader nutzbar.&lt;br /&gt;
&lt;br /&gt;
* '''varying'''&lt;br /&gt;
: Stellt die Verbindung zwischen einem Vertex- und einem FragmentShader dar. Werden im VertexShader geschrieben und dann perspektivisch korrekt über die Primitive interpoliert, um dann im Fragment Shader gelesen werden zu können. Nutzbar sind hier nur die Typen float, vec2, vec3, vec4, mat2, mat3 und mat4, Strukturen und andere Datentypen können nicht varying sein. Die Namen einer varying-Variable müssen sowohl im VertexShader als auch im FragmentShader gleich sein.&lt;br /&gt;
&lt;br /&gt;
* '''in'''&lt;br /&gt;
: Für Variablen die an eine Funktion übergeben und dort ausgelesen werden.&lt;br /&gt;
&lt;br /&gt;
* '''out'''&lt;br /&gt;
: Für Variablen die von einer Funktion nach aussen zurückgegeben werden.&lt;br /&gt;
&lt;br /&gt;
* '''inout'''&lt;br /&gt;
: Für Variablen die sowohl an eine Funktion übergeben als auch von dieser zurückgegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um obige Auflistung nicht leer im Raum stehen zu lassen zeige ich ein paar Beispiele die hoffentlich zum Verständnis beitragen :&lt;br /&gt;
&lt;br /&gt;
===Beispiel A=== &lt;br /&gt;
Vertexnormale soll an einen FragmenShader (interpoliert) übergeben werden :&lt;br /&gt;
&lt;br /&gt;
:Im VertexShader :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
varying vec3 VertexNormal;&lt;br /&gt;
...&lt;br /&gt;
VertexNormal = normalize(MV_IT * gl_Normal);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:Im FragmentShader :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
varying vec3 VertexNormal;&lt;br /&gt;
...&lt;br /&gt;
TempVector = VertexNormal*...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Beispiel B=== &lt;br /&gt;
Uniformparameter zur nachträglichen Farbänderung der Szene wird im Programm übergeben :&lt;br /&gt;
&lt;br /&gt;
:Im VertexShader :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
uniform vec4 GlobalColor;&lt;br /&gt;
...&lt;br /&gt;
gl_FrontColor = GlobalColor * gl_Color;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:Im Programm :&lt;br /&gt;
&lt;br /&gt;
 glUniform4fARB(glSlang_GetUniLoc(ProgramObject, 'GlobalColor'), Col[0], Col[1], Col[2], Col[3]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Beispiel C=== &lt;br /&gt;
Konstante zur festen Farbänderung :&lt;br /&gt;
&lt;br /&gt;
:Im VertexShader :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
const vec4 ColorBias = vec4(0.2, 0.3, 0.0, 0.0);&lt;br /&gt;
...&lt;br /&gt;
gl_FrontColor = ColorBias * gl_Color;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==Konstruktoren==&lt;br /&gt;
&lt;br /&gt;
Um in einem Shader ''Vektoren'' oder ''Matrizen'' mit Werten zu belegen, gibt es sogenannte Konstruktoren (nicht zu verwechseln mit z.B. Klassenkonstruktoren unter Delphi), die im Endeffekt nichts anderes als Funktionen zur Vorbelegung von Vektoren oder Matrizen darstellen. Dabei trägt der Konstruktor den selben Namen wie die Typendeklaration, also lässt sich eine Variable vom Typ {{INLINE_CODE|vec4}} mit dem Konstruktor {{INLINE_CODE|vec4(float, float, float, float)}} initialisieren.&lt;br /&gt;
&lt;br /&gt;
Allerdings hat man sich recht viel Mühe bei dieser Konstruktorgeschichte gemacht, so dass man einen vec4 nicht unbedingt mit einem {{INLINE_CODE|vec4}}-Konstruktor vorbelegen muss, sondern es vielseitige Möglichkeiten gibt. Um dies zu verdeutlichen gibts ein paar Beispiele :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
vec4 Color = vec4(1.0, 0.0, 0.0, 0.0);&lt;br /&gt;
vec4 Color = vec4(MyVec3, 1.0);&lt;br /&gt;
vec4 Color = vec4(MyVec2_A, MyVec2_B);&lt;br /&gt;
&lt;br /&gt;
vec3 LVec  = vec3(MyVec4);&lt;br /&gt;
vec2 Tmp   = vec2(MyVec3);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Trotz der recht wenigen Beispiele sollte schnell erkennbar sein, das man hier wirklich sehr viele Kombinationsmöglichkeiten hat, die dann gültig sind ''wenn man mindestens auf die benötigte Anzahl der Argumente kommt''. Im vorletzten Beispiel wird z.B. ein 3-Komponentenvektor aus einem 4-Komponentenvektor initialisiert. Das erzeugt keinen Fehler, sondern führt dazu das {{INLINE_CODE|vec3.x, vec3.y, vec3.z}} aus MyVec4 übernommen werden und MyVec4.w einfach ignoriert wird.&lt;br /&gt;
&lt;br /&gt;
Das Umkehrbeispiel, also&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
vec4 Color = vec4(MyVec3)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
funktioniert allerdings nicht, da hier die Zahl der benötigten Argumente nicht erreicht wird. In diesem Falle müsste es dann&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt; &lt;br /&gt;
vec4 Color = vec4(MyVec3, 0.0)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
heissen.&lt;br /&gt;
&lt;br /&gt;
Obiges gilt natürlich auch für ''Matrixkonstruktoren'', hier sind z.B. folgende Konstuktoren denkbar, obwohl eigentlich alle Möglichkeiten nutzbar sind, ''solange die benötigte Zahl an Argumenten erreicht wird'' :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
mat4 MyMatrix = mat4(MyVec4, MyVec4, MyVec4, MyVec4);&lt;br /&gt;
mat2 MyMatrix = mat4(1.0, 0.0, 0.0, 0.0,&lt;br /&gt;
                     0.0, 1.0, 0.0, 0.0,&lt;br /&gt;
                     0.0, 0.0, 1.0, 0.0,&lt;br /&gt;
                     0.0, 0.0, 0.0, 1.0);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vektor- und Matrixkomponenten==&lt;br /&gt;
&lt;br /&gt;
Was natürlich in keiner Shadersprache fehlen darf, ist der leichte Zugriff auf die einzelnen Komponenten eines Vektors. glSlang bietet, je nach Anwendungsgebiet gleich drei Namensets für den Zugriff auf die Komponenten eines solchen Vektors, welches Set man nutzen will bleibt natürlich frei und ist unabhängig von der Deklaration eines Vektors. Man sollte nur darauf achten, beim gleichzeitigen Zugriff auf mehrere Komponenten im gleichen Namenset zu verbleiben :&lt;br /&gt;
&lt;br /&gt;
* {x, y, z, w}&lt;br /&gt;
:Für den Zugriff auf Vektoren die Punkte, Normale oder sonstige Vertexdaten repräsentieren.&lt;br /&gt;
&lt;br /&gt;
* {r, g, b, a}&lt;br /&gt;
:Für den Zugriff auf Vektoren die Farbwerte repräsentieren.&lt;br /&gt;
&lt;br /&gt;
* {s, t, p, q}&lt;br /&gt;
:Für den Zugriff auf Vektoren die Texturkoordinaten repräsentieren.&lt;br /&gt;
&lt;br /&gt;
Ein paar Beispiele zur Unterstreichung des oben gesagten :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
v4.rgba = vec4(1.0, 0.0, 0.0, 0.0);  // gültig&lt;br /&gt;
v4.rgzw = vec4(1.0, 1.0, 1.0, 2.0);  // Ungültig, da verschiedenen Namensets&lt;br /&gt;
v2.rgb  = vec3(1.0, 2.0, 1.0);       // Ungültig, da vec2 nur r+g besitzt&lt;br /&gt;
v2.xx   = vec2(5.0, 3.0);            // Ungültig, da 2 mal gleiche Komponente&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auch der Zugriff auf die Komponenten einer Matrix geht leicht von der Hand. Namensets wie bei den Vektoren gibt es hier natürlich keine, aber folgende Beispiele sollen den Zugriff aufzeigen :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
MyMat4[2]    = vec4(1.0); // Setzt die 3.Zeile der Matrix komplett auf 1.0&lt;br /&gt;
MyMat4[3][3] = 3.5;       // Setzt das Element unren rechts auf 3.5&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Zugriff auf Matrixelemente ausserhalb ihrer Dimension (also z.B. MyMat4[4][4]) liefert unvorhersehabre Ergebnise, also sollte man auf diese Fälle prüfen. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Vektor- und Matrixoperationen==&lt;br /&gt;
&lt;br /&gt;
Wie von C gewohnt sind in glSlang so ziemlich alle Operatoren die man auf Matrizen oder Vektoren anwenden kann überladen, so das man nicht umständlich über selbstgeschriebene Funktionen kombinieren muss. Darüber hinaus ist es in den meisten Fällen auch möglich ohne Konvertierung Fließkommawerte mit kompletten Matrizen oder Vektoren zu kombinieren. Folgende Beispiele zeigen einige der vielfältigen Kombinationsmöglichkeiten auf :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
vec3  dest;&lt;br /&gt;
vec3  source;&lt;br /&gt;
float factor;&lt;br /&gt;
&lt;br /&gt;
vec3 dest = source + factor; &lt;br /&gt;
&lt;br /&gt;
// Ist gleich&lt;br /&gt;
dest.x = source.x + factor;&lt;br /&gt;
dest.y = source.y + factor;&lt;br /&gt;
dest.z = source.z + factor;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Matrix * Vektor ist auch ohne manuelle Konvertierung möglich :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
vec3  dest;&lt;br /&gt;
vec3  source;&lt;br /&gt;
mat3  MyMat;&lt;br /&gt;
 &lt;br /&gt;
dest = source * MyMat; &lt;br /&gt;
 &lt;br /&gt;
// Ist gleich&lt;br /&gt;
dest.x = dot(source, MyMat[0]);&lt;br /&gt;
dest.y = dot(source, MyMat[1]);&lt;br /&gt;
dest.z = dot(source, MyMat[2]);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auch hier sind die Möglichkeiten fast unbeschränkt und zeigen wieder wie flexibel glSlang ausgelegt ist. &lt;br /&gt;
&lt;br /&gt;
==Operatoren==&lt;br /&gt;
&lt;br /&gt;
glSlang bietet (momentan) folgende Operatoren, die Liste ist nach ihrer Gewichtung sortiert (Anfang = höchste). Alle ''reservierten'' Operatoren werden erst in kommender Hardware/glSlang-Versionen nutzbar sein :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div  align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{|{{Prettytable_B1}}&lt;br /&gt;
!Operatorklasse  	&lt;br /&gt;
!Operatoren  	&lt;br /&gt;
!Assoziation&lt;br /&gt;
|-&lt;br /&gt;
|Gruppering 	&lt;br /&gt;
|() 	&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Arrayindizierung&amp;lt;br&amp;gt;Funktionsaufrufe und Konstruktoren&amp;lt;br&amp;gt;Strukturfeldwahl und Swizzle&amp;lt;br&amp;gt;Postinkrement und -dekrement&amp;lt;br&amp;gt; 	&lt;br /&gt;
|[]&amp;lt;br&amp;gt;()&amp;lt;br&amp;gt;.&amp;lt;br&amp;gt;++ -- 	&lt;br /&gt;
|Links n. Rechts&lt;br /&gt;
|-&lt;br /&gt;
|Prefixinkrement- und dekrement&amp;lt;br&amp;gt;Einheitlich (~ reserviert) 	&lt;br /&gt;
| ++ --&amp;lt;br&amp;gt; + - ~ ! 	&lt;br /&gt;
|Rechts n. Links&lt;br /&gt;
|-&lt;br /&gt;
|Mulitplikation (% reserviert) 	&lt;br /&gt;
|* / % 	&lt;br /&gt;
|Links n. Rechts&lt;br /&gt;
|-&lt;br /&gt;
|Additiv 	&lt;br /&gt;
| + - 	&lt;br /&gt;
|Links n. Rechts&lt;br /&gt;
|-&lt;br /&gt;
|Bitweises Verschieben (reserviert) 	&lt;br /&gt;
|&amp;lt;&amp;lt;  &amp;gt;&amp;gt; 	&lt;br /&gt;
|Links n. Rechts&lt;br /&gt;
|-&lt;br /&gt;
|Relation 	&lt;br /&gt;
|&amp;lt;  &amp;gt;  &amp;lt;=  &amp;gt;= 	&lt;br /&gt;
|Links n. Rechts&lt;br /&gt;
|-&lt;br /&gt;
|Vergleich 	&lt;br /&gt;
|==  != 	&lt;br /&gt;
|Links n. Rechts&lt;br /&gt;
|-&lt;br /&gt;
|Bitweises AND (reserviert) 	&lt;br /&gt;
|&amp;amp; 	&lt;br /&gt;
|Links n. Rechts&lt;br /&gt;
|-&lt;br /&gt;
|Bitweises XOR (reserviert) 	&lt;br /&gt;
|^ 	&lt;br /&gt;
|Links n. Rechts&lt;br /&gt;
|-&lt;br /&gt;
|Bitweises OR (reserviert) 	&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 	&lt;br /&gt;
|Links n. Rechts&lt;br /&gt;
|-&lt;br /&gt;
|Logisches AND 	&lt;br /&gt;
|&amp;amp;&amp;amp; 	&lt;br /&gt;
|Links n. Rechts&lt;br /&gt;
|-&lt;br /&gt;
|Logisches XOR 	&lt;br /&gt;
|^^ 	&lt;br /&gt;
|Links n. Rechts&lt;br /&gt;
|-&lt;br /&gt;
|Logisches OR 	&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt; 	&lt;br /&gt;
|Links n. Rechts&lt;br /&gt;
|-&lt;br /&gt;
|Auswahl 	&lt;br /&gt;
|?: 	&lt;br /&gt;
|Rechts n. Links&lt;br /&gt;
|-&lt;br /&gt;
|Zuweisung&amp;lt;br&amp;gt;Arithmetrische Zuweisung&amp;lt;br&amp;gt;(Modulis, Shift und bitweise Op. reserviert) 	&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt; &amp;lt;nowiki&amp;gt;+= -=  *=  /=  %=&amp;lt;/nowiki&amp;gt; &amp;lt;br&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;=  &amp;gt;&amp;gt;= &amp;amp;=  ^=  |=&amp;lt;/nowiki&amp;gt; 	&lt;br /&gt;
|Rechts n. Links&lt;br /&gt;
|-&lt;br /&gt;
|Aufzählung 	&lt;br /&gt;
|, 	&lt;br /&gt;
|Links n. Rechts&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Funktionen==&lt;br /&gt;
&lt;br /&gt;
Ein großer Vorteil von Hochsprachen ist u.A. die Möglichkeit oft genutzte Codeteile in Funktionen (bzw. auch Prozeduren unter Pascal) zu verpacken um so Flexibilität als auch Übersichtlichkeit zu steigern. Wer schonmal was in C geschrieben hat, der wird sich jetzt sicherlich kein Kopfzerbrechen machen müssen. Funktionen werden in glSlang genauso nach folgendem Prinzip deklariert :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
RückgabeTyp FunktionsName(Typ0 Argument0, Typ1, Argument1, ... , TypN, ArgumentN)&lt;br /&gt;
 {&lt;br /&gt;
 return RückgabeWert;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funktionen die ''nichts zurückgeben'' müssen mit dem RückgabeTyp {{INLINE_CODE|void}} deklariert werden, ausserdem entfällt dann logischerweise das {{INLINE_CODE|return}}. Falls die Funktion eines ihrere Argumente nach aussen übergeben soll, muss dieses Argument mit dem Typenqualifizierer out (Siehe Kapitel 4.2) versehen werden. ''Arrays'' können nur als Eingabeargumente übergeben werden und dürfen nich dimensioniert als Argument verwendet werden, sondern müssen mit leeren Klammern argumentiert werden.&lt;br /&gt;
Ein paar Beispiele :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
void MeineFunktion(float EingabeWert; out float AusgabeWert)&lt;br /&gt;
 {&lt;br /&gt;
 AusgabeWert = EingabeWert*MyConstValue;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Funktion gibt ''nichts'' zurück, aber gibt EingabeWert*MyConstValue im Ausgabeargument AusgabeWert nach aussen.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
float MeineFunktion(float EingabeWert)&lt;br /&gt;
 {&lt;br /&gt;
 return EingabeWert*MyConstValue;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bietet genau die selbe Funktionalität wie das Beispiel darüber. Allerdings wird hier der berechnete Wert als Ergebnis der Funktion zurückgeliefert.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
float VektorSumme(float v[])&lt;br /&gt;
 {&lt;br /&gt;
 return v[0]+v[1]+v[2]+v[3];&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie bereits gesagt darf ein Array als Argument keine Dimensionierung enthalten. Wenn man der Funktion also ein Array übergibt, sollte man vorher drauf achten das es entsprechend der in der Funktion genutzten Indizes dimensioniert wurde.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==if-Anweisung==&lt;br /&gt;
&lt;br /&gt;
Selektion über eine if-Anweisung darf auch in keiner Hochsprache fehlen. Genauso wie in C oder Delphi erwartet auch hier die If-Anweisung einen boolschen Ausdruck (Wahr oder Falsch) und wird dann ausgeführt (wahr) bzw. verzweigt auf ein (wenn vorhanden) else (falsch). Verschachtelung ist wie erwartet auch möglich.&lt;br /&gt;
&lt;br /&gt;
'''Hinweis : ''' &lt;br /&gt;
Grafikkarten auf dem Stand des Shadermodells 2.0 (Radeon 9x00, Radeon X8x0, GeForceFX 5x00) unterstüzten im Fragmentshader kein Early-Out, was zur Folge hat das bei einer If-Anweisung immer alle Zweige ausgeführt werden. Am Ende wird dann aber nur ein Ergebnis geschrieben, die anderen verworfen. Auf solchen Karten bringen If-Anweisungen also im Normalfall keine Geschwindigkeitssteigerung, sondern oft eher das Gegenteil.&lt;br /&gt;
Neuere SM3.0-Karten (Radeon X1x00, GeForce6x00 und höher) ist dass nicht mehr der Fall, da hier dynamische Verzweigungen und auch Early-Out von der Hardware implementiert werden.&lt;br /&gt;
&lt;br /&gt;
==Schleifen==&lt;br /&gt;
&lt;br /&gt;
Auch Schleifen, ein wichtiges Konzept jeder Hochsprache haben ihren Weg in glSlang gefunden. Unterstützt werden folgende Schleifentypen :&lt;br /&gt;
&lt;br /&gt;
* '''for'''-Schleife&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
for (Startausdruck; Durchlaufbedingung; Wiederholungsausdruck)&lt;br /&gt;
  {&lt;br /&gt;
   statement&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''while'''-Schleife&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
while (Durchlaufbedingung)&lt;br /&gt;
 {&lt;br /&gt;
  statement&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''do'''-while-Schleife&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
do&lt;br /&gt;
 {&lt;br /&gt;
  statement&lt;br /&gt;
 }&lt;br /&gt;
 while (Durchlaufbedingung)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Hinweis :''' Grafikkarten auf dem Stand des Shadermodells 2.0 (Radeon 9x00, Radeon X8x0, GeForceFX 5x00) unterstüzten Schleifen nicht in Hardware. Schleifen werden dann beim Kompilieren vom Treiber entrollt, wodurch natürlich Shader mit weitaus mehr Instruktionen als erwartet generiert werden. Von daher sollte man auf solchen Karten möglichst auf Schleifen verzichten, oder diese nur recht kurz halten. Bei SM3.0-Karten (Radeon X1x00, GeForce6x00 und höher) ist dass nicht mehr der Fall.&lt;br /&gt;
&lt;br /&gt;
=Eingebaute Variablen, Attribute und Konstanten=&lt;br /&gt;
Nachdem wir uns nun lange genug mit den minderinterssanten Elementen der glSlang-Syntax beschäftigt haben, gehts jetzt endlich an die wirklich interessanten Dinge. Wie schon ARB_VP/ARB_FP bringt auch glSlang jede Menge eingabauter Variablen, Attribute und Konstanten mit, deren Aliase sie recht leicht identifizierbar machen (ganz im Gegensatz zum Indexgewusel bei den DX-Shadern).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Variablen im Vertex Shader==&lt;br /&gt;
Exklusiv im Vertex Shader stehen die folgenden Variablen zur Verfügung :&lt;br /&gt;
&lt;br /&gt;
* vec4 gl_Position    muss geschrieben werden&lt;br /&gt;
:Dieser Variable '''muss''' im Vertexshader ein Wert zugewiesen werden, wird dies nicht getan ist das Ergebnis (sprich die Position des Vertex) undefiniert. Vorgesehen ist diese Variable für die ''homogene Position des Vertex'' und wird u.a. zum Clipping und Culling verwendet. Sie darf natürlich auch (mehrfach) geschrieben und ausgelesen werden.&lt;br /&gt;
&lt;br /&gt;
* float gl_PointSize    kann geschrieben werden&lt;br /&gt;
:Diese Variable wurde dazu vorgesehen um dort im VertexShader die Punktgröße in Pixeln hineinzuschreiben.&lt;br /&gt;
&lt;br /&gt;
* vec4 gl_ClipVertex    kann geschrieben werden&lt;br /&gt;
:Falls genutzt, sollten hier die Vertexkoordinaten die im Zusammenhang mit benutzerdefinierten Clippingplanes genutzt werden abgelegt werden. Wichtig ist, das gl_ClipVertex im selben Koordinatenraum wie die Clippingplane definiert ist.&lt;br /&gt;
&lt;br /&gt;
==Attribute im Vertex Shader==&lt;br /&gt;
&lt;br /&gt;
Folgende Attribute stehen nur im Vertex Shader zur Verfügung und '''können nur gelesen werden''' :&lt;br /&gt;
&lt;br /&gt;
* vec4 gl_Color&lt;br /&gt;
: Farbwert des Vertex.&lt;br /&gt;
* vec4 gl_SecondaryColor&lt;br /&gt;
:Sekundärer Farbwert des Vertex.&lt;br /&gt;
* vec4 gl_Normal&lt;br /&gt;
:Normale des Vertex.&lt;br /&gt;
* vec4 gl_Vertex&lt;br /&gt;
:Koordinaten des Vertex;&lt;br /&gt;
* vec4 gl_MultiTexCoord0..7&lt;br /&gt;
:Texturkoordinaten auf Textureinheit 0..7.&lt;br /&gt;
* float gl_FogCoord&lt;br /&gt;
:Nebelkoordinate des Vertex. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Variablen im Fragment Shader==&lt;br /&gt;
&lt;br /&gt;
Im Fragment Shader sind folgende Variablen exklusiv nutzbar :&lt;br /&gt;
&lt;br /&gt;
* vec4 gl_FragColor&lt;br /&gt;
: Speichert den Farbwert des Fragmentes, der von folgenden Funktionen der festen Pipeline genutzt wird. Wird dieser Variable nichts zugewiesen, so ist ihr Inhalt undefiniert und darauf aufbauende Ergebnisse ebenfalls.&lt;br /&gt;
&lt;br /&gt;
* vec4 gl_FragData[0..15]&lt;br /&gt;
: Ersetzt gl_FragColor bei der Verwendung von multiplen Rendertargets. &lt;br /&gt;
&lt;br /&gt;
* float gl_FragDepth&lt;br /&gt;
: Durch schreiben dieser Variable kann man den von der festen Funktionspipeline ermittelten Tiefenwert überspringen, der mit {{INLINE_CODE|gl_FragCoord.z}} ausgelesen werden kann. Wird dieser Wert nicht geschrieben, nutzen folgende Funktionen der Pipeline den vorher fest berechneten Wert.&lt;br /&gt;
&lt;br /&gt;
* vec4 gl_FragCoord    nur lesen&lt;br /&gt;
: In dieser Variable ist die Position des Fragmentes relativ zur Fensterposition im Format x,y,z,1/w abgelegt, wobei z den von der festen Funktionspipeline berechneten Tiefenwert enthält.&lt;br /&gt;
&lt;br /&gt;
* bool gl_FrontFacing    nur lesen&lt;br /&gt;
: Gibt an ob das Fragment zu einer nach vorne zeigenden Primitive gehört (=true). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Bezug auf {{INLINE_CODE|gl_FragColor}} und {{INLINE_CODE|gl_FragDepth}} sei noch anzumerken das diese ''nicht'' in den Wertebereich 0..1 gebracht werden müssen, da dies später durch die feste Funktionspipeline automatisch gemacht wird.&lt;br /&gt;
&lt;br /&gt;
==Eingebaute Varyings==&lt;br /&gt;
&lt;br /&gt;
Wie bereits in Kapitel 4.2 erwähnt, stellen Varyings eine Schnittstelle zwischen dem Vertex und dem Fragment Shader dar. Sie werden im Vertex Shader geschrieben und können dann im Fragment Shader ausgelesen werden, ohne das die folgenden Varyings dafür explizit deklariert werden müssen :&lt;br /&gt;
&lt;br /&gt;
* vec4 gl_FrontColor&lt;br /&gt;
: Farbe der Vorderseite des Vertex.&lt;br /&gt;
&lt;br /&gt;
* vec4 gl_BackColor&lt;br /&gt;
: Farbe der Rückseite des Vertex.&lt;br /&gt;
&lt;br /&gt;
* vec4 gl_FrontSecondaryColor&lt;br /&gt;
: Sekundäre Farbe der Vorderseite des Vertex.&lt;br /&gt;
&lt;br /&gt;
* vec4 gl_BackSecondaryColor&lt;br /&gt;
: Sekundäre Farbe der Rückseite des Vertex.&lt;br /&gt;
&lt;br /&gt;
* vec4 gl_TexCoord[x]&lt;br /&gt;
: Texturkoordinaten des Vertex auf Textureinheit x, wobei x die von der Hardware zur Verfügung gestellte Zahl der Textureinheiten-1 nicht überschreiten darf.&lt;br /&gt;
&lt;br /&gt;
* float gl_FogFragCoord&lt;br /&gt;
: Nebelkoordinate des Fragmentes. &lt;br /&gt;
&lt;br /&gt;
Die Varyings {{INLINE_CODE|gl_FrontColor, gl_FrontSecondaryColor, gl_BackColor}} und {{INLINE_CODE|gl_BackSecondaryColor}} können im FragmentShader nur unter den Aliases gl_Color bzw. gl_SecondaryColor gelesen werden. Welcher Wert des Vertex Shaders im Fragment Shader dort eingesetzt wird ist abhängig davon ob das Fragment zu einer nach vorne oder nach hinten zeigenden Primitive gehört.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Eingebaute Konstanten==&lt;br /&gt;
Auch diverse Konstanten wurden definiert um darauf schnell im Shader zugreifen zu können. In den Klammern stehen die von einer GL-Implementation als Mindestanforderung anzubietenden Werte. Alle Konstanten sind sowohl im Vertex als auch im Fragment Shader abrufbar :&lt;br /&gt;
&lt;br /&gt;
: OpenGL 1.0/1.2 :&lt;br /&gt;
* int gl_MaxLights (8)&lt;br /&gt;
* int gl_MaxClipPlanes (6)&lt;br /&gt;
* int gl_MaxTextureUnits (2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: ARB_Fragment_Program :&lt;br /&gt;
* int gl_MaxTextureCoordsARB (2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: Vertex_Shader :&lt;br /&gt;
* int gl_MaxVertexAttributesGL2 (16)&lt;br /&gt;
* int gl_MaxVertexUniformFloatsGL2 (512)&lt;br /&gt;
* int gl_MaxVaryingFloatsGL2 (32)&lt;br /&gt;
* int gl_MaxVertexTextureUnitsGL2 (1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: Fragment_Shader :&lt;br /&gt;
* int gl_MaxFragmentTextureUnitsGL2 (2)&lt;br /&gt;
* int gl_MaxFragmentUniformFloatsGL2 (64)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Eingebaute Uniformvariablen==&lt;br /&gt;
&lt;br /&gt;
Um den Zugriff auf OpenGL-Staten zu vereinfachen wurden in glSlang diverse Uniformvariablen zur direkten Verwendung im Shader eingebaut. Wie gewohnt wurden auch hier sinnvolle Namen verwendet, so dass eine tiefere Erklärung unnötig sein dürfte :&lt;br /&gt;
&lt;br /&gt;
* mat4 gl_ModelViewMatrix&lt;br /&gt;
* mat4 gl_ProjectionMatrix&lt;br /&gt;
* mat4 gl_ModelViewProjectionMatrix&lt;br /&gt;
* mat3 gl_NormalMatrix&lt;br /&gt;
:{{INLINE_CODE|gl_NormalMatrix}} repräsentiert die invertierten und anschließend transponierten oberen 3x3 Werte der {{INLINE_CODE|gl_ModelViewMatrix}}.&lt;br /&gt;
* mat4 gl_TextureMatrix[gl_MaxTextureCoordsARB]&lt;br /&gt;
&lt;br /&gt;
* float gl_NormalScale&lt;br /&gt;
: Gibt den unter OpenGL festgelegten Faktor zur Skalierung der Normalen zurück.&lt;br /&gt;
&lt;br /&gt;
* struct gl_DepthRangeParameters&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
struct gl_DepthRangeParameters&lt;br /&gt;
{&lt;br /&gt;
 float near;&lt;br /&gt;
 float far;&lt;br /&gt;
 float diff;&lt;br /&gt;
};&lt;br /&gt;
gl_DepthRangeParameters gl_DepthRange;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
: Clippingplanes : &lt;br /&gt;
* vec4 gl_ClipPlane[gl_MaxClipPlanes]&lt;br /&gt;
  &lt;br /&gt;
*struct gl_PointParameters&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
struct gl_PointParameters&lt;br /&gt;
{&lt;br /&gt;
 float size;&lt;br /&gt;
 float sizeMin;&lt;br /&gt;
 float sizeMax;&lt;br /&gt;
 float fadeThresholdSize;&lt;br /&gt;
 float distanceConstantAttenuation;&lt;br /&gt;
 float distanceLinearAttenuation;&lt;br /&gt;
 float distanceQuadraticAttenuation;&lt;br /&gt;
};&lt;br /&gt;
gl_PointParameters gl_Point;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*struct gl_MaterialParameters&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
struct gl_MaterialParameters&lt;br /&gt;
{&lt;br /&gt;
 vec4 emission;&lt;br /&gt;
 vec4 ambient;&lt;br /&gt;
 vec4 diffuse;&lt;br /&gt;
 vec4 specular;&lt;br /&gt;
 float shininess;&lt;br /&gt;
};&lt;br /&gt;
gl_MaterialParameters gl_FrontMaterial;&lt;br /&gt;
gl_MaterialParameters gl_BackMaterial;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*struct gl_LightSourceParameters&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
struct gl_LightSourceParameters&lt;br /&gt;
{&lt;br /&gt;
 vec4 ambient;&lt;br /&gt;
 vec4 diffuse;&lt;br /&gt;
 vec4 specular;&lt;br /&gt;
 vec4 position;&lt;br /&gt;
 vec4 halfVector;&lt;br /&gt;
 vec3 spotDirection;&lt;br /&gt;
 float spotExponent;&lt;br /&gt;
 float spotCutoff;&lt;br /&gt;
 float spotCosCutoff;&lt;br /&gt;
 float constantAttenuation;&lt;br /&gt;
 float linearAttenuation;&lt;br /&gt;
 float quadraticAttenuation;&lt;br /&gt;
};&lt;br /&gt;
gl_LightSourceParameters gl_LightSource[gl_MaxLights];&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*struct gl_LightModelParameters&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
struct gl_LightModelParameters&lt;br /&gt;
{&lt;br /&gt;
 vec4 ambient;&lt;br /&gt;
};&lt;br /&gt;
gl_LightModelParameters gl_LightModel;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*struct gl_LightModelProducts&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
struct gl_LightModelProducts&lt;br /&gt;
{&lt;br /&gt;
 vec4 sceneColor;&lt;br /&gt;
};&lt;br /&gt;
gl_LightModelProducts gl_FrontLightModelProduct;&lt;br /&gt;
gl_LightModelProducts gl_BackLightModelProduct;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*struct gl_LightProducts&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
struct gl_LightProducts&lt;br /&gt;
{&lt;br /&gt;
 vec4 ambient;&lt;br /&gt;
 vec4 diffuse;&lt;br /&gt;
 vec4 specular;&lt;br /&gt;
};&lt;br /&gt;
gl_LightProducts gl_FrontLightProduct[gl_MaxLights];&lt;br /&gt;
gl_LightProducts gl_BackLightProduct[gl_MaxLights];&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* vec4 gl_TextureEnvColor[gl_MaxFragmentTextureUnitsGL2]&lt;br /&gt;
* vec4 gl_EyePlaneS[gl_MaxTextureCoordsARB]&lt;br /&gt;
* vec4 gl_EyePlaneT[gl_MaxTextureCoordsARB]&lt;br /&gt;
* vec4 gl_EyePlaneR[gl_MaxTextureCoordsARB]&lt;br /&gt;
* vec4 gl_EyePlaneQ[gl_MaxTextureCoordsARB]&lt;br /&gt;
* vec4 gl_ObjectPlaneS[gl_MaxTextureCoordsARB]&lt;br /&gt;
* vec4 gl_ObjectPlaneT[gl_MaxTextureCoordsARB]&lt;br /&gt;
* vec4 gl_ObjectPlaneR[gl_MaxTextureCoordsARB]&lt;br /&gt;
* vec4 gl_ObjectPlaneQ[gl_MaxTextureCoordsARB]&lt;br /&gt;
&lt;br /&gt;
*struct gl_FogParameters&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
struct gl_FogParameters&lt;br /&gt;
{&lt;br /&gt;
 vec4 color;&lt;br /&gt;
 float density;&lt;br /&gt;
 float start;&lt;br /&gt;
 float end;&lt;br /&gt;
 float scale;&lt;br /&gt;
};&lt;br /&gt;
gl_FogParameters gl_Fog;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Diese recht umfangreiche GL-Stateliste sollte eigentlich jeden Bedarf decken und momentan gibts kaum einen OpenGL-Status den man so nicht in einem Shader abfragen bzw. nutzen kann.&lt;br /&gt;
&lt;br /&gt;
=Eingebaute Funktionen=&lt;br /&gt;
glSlang ist mit diversen Skalar- und Vektorfunktionen ausgestattet, die teilweise (idealerweise) sogar direkt in der Hardware ausgeführt werden, weshalb einer fertigen Funktion ggü. gleichwertigen eigenen Berechnungen immer der Vorzug zu geben ist.&lt;br /&gt;
{{Hinweis| ''genType'' kann vom Type float, vec2, vec3 oder vec4 sein, ''mat'' vom Typ mat2, mat3 oder mat4.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trigonometrie und Winkel==&lt;br /&gt;
Alle übergebenen Winkel sollten, soweit nicht anders vermerkt, in Radien angegeben werden.&lt;br /&gt;
&lt;br /&gt;
* genType radians (genType degrees)&lt;br /&gt;
: Wandelt von Grad nach Radien. &lt;br /&gt;
* genType degrees (genType radians)&lt;br /&gt;
: Wandelt von Radien nach Grad.&lt;br /&gt;
* genType sin (genType angle)&lt;br /&gt;
: Gibt den Sinus von Angle zurück, wobei Angle in Radien angegeben wird.&lt;br /&gt;
* genType cos (genType angle)&lt;br /&gt;
: Gibt den Cosinus von Angle zurück, wobei Angle in Radien angegeben wird.&lt;br /&gt;
* genType tan (genType angle)&lt;br /&gt;
: Gibt den Tangens von Angle zurück, wobei Angle in Radien angegeben wird.&lt;br /&gt;
* genType asin (genType x)&lt;br /&gt;
: Liefert den Arcsinus von x zurück, also den Winkel dessen Sinus x ergeben würde.&lt;br /&gt;
* genType acos (genType x)&lt;br /&gt;
: Liefert den Arccosinus von x zurück, also den Winkel dessen Cosinus x ergeben würde.&lt;br /&gt;
* genType atan (genType y, genType x)&lt;br /&gt;
: Liefert den Winkel zurück, dessen Tangens x/y ergeben würde.&lt;br /&gt;
* genType atan (genType y_over_x)&lt;br /&gt;
: Liefert den Winkel zurück, dessen Tangens x über y ergeben würde.&lt;br /&gt;
&lt;br /&gt;
==Exponentiell==&lt;br /&gt;
* genType pow (genType x, genType y)&lt;br /&gt;
: Gibt x hoch y zurück.&lt;br /&gt;
* genType exp2 (genType x)&lt;br /&gt;
: Gibt 2 hoch x zurück.&lt;br /&gt;
* genType log2 (genType x)&lt;br /&gt;
: Gibt den Logarithmus zur Basis 2 von x zurück.&lt;br /&gt;
* genType sqrt (genType x)&lt;br /&gt;
: Gibt die Wurzel von x zurück.&lt;br /&gt;
* genType inversesqrt (genType x)&lt;br /&gt;
: Gibt die umgekehrte Wurzel von x zurück. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Standardfunktionen==&lt;br /&gt;
* genType abs (genType x)&lt;br /&gt;
: Liefert den absoluten Wert von x zurück.&lt;br /&gt;
* genType sign (genType x)&lt;br /&gt;
: Gibt -1.0 zurück, wenn x &amp;lt; 0.0, 0.0 wenn x = 0.0 und 1.0 wenn x &amp;gt; 0.0.&lt;br /&gt;
* genType floor (genType x)&lt;br /&gt;
: Gibt denn nächsten Integerwert zurück, der kleiner oder gleich x ist.&lt;br /&gt;
* genType ceil (genType x)&lt;br /&gt;
: Gibt den nächsten Integerwert zurück, der größer oder gleich x ist.&lt;br /&gt;
* genType fract (genType x)&lt;br /&gt;
: Gibt den Nachkommateil von x zurück.&lt;br /&gt;
* genType mod (genType x, float y) &lt;br /&gt;
* genType mod (genType x, genType y)&lt;br /&gt;
: Gibt den Modulus zurück. (=x-y * floor(x/y)) &lt;br /&gt;
* genType min (genType x, genType y) &lt;br /&gt;
* genType min (genType x, float y)&lt;br /&gt;
: Liefert y zurück wenn y &amp;lt; x, ansonsten x. &lt;br /&gt;
* genType max (genType x, genType y) &lt;br /&gt;
* genType max (genType x, float y)&lt;br /&gt;
: Liefert y zurück wenn x &amp;lt; y, ansonsten x. &lt;br /&gt;
* genType clamp (genType x, genType minVal, genType maxVal) &lt;br /&gt;
* genType clamp (genType x, float minVal, float maxVal)&lt;br /&gt;
: Zwängt x in den Bereich minVal..maxVal. &lt;br /&gt;
* genType mix (genType x, genType y, genType a)&lt;br /&gt;
* genType mix (genType x, genType y, float a)&lt;br /&gt;
: Liefert den linearen Blend zwischen x und y zurück. (= x * (1-a) + y * a) &lt;br /&gt;
* genType step (genType edge, genType x)&lt;br /&gt;
* genType step (float edge, genType x)&lt;br /&gt;
: Liefert 0.0 zurück, wenn x &amp;lt; edge, ansonsten 1.0. &lt;br /&gt;
* genType smoothstep (genType edge0, genType edge1, genType x)&lt;br /&gt;
* genType smoothstep (float edge0, float edge1, genType x)&lt;br /&gt;
: Liefert 0.0 zurück, wenn x &amp;lt;= edge0 und 1.0 wenn x &amp;gt;= edge1. Dabei wird eine weiche Hermite Interpolation zwischen 0 und 1 durchgeführt.&lt;br /&gt;
&lt;br /&gt;
==Geometrie==&lt;br /&gt;
* float length (genType x)&lt;br /&gt;
: Gibt die Länge des Vektors x (= sqrt(x[0]² + x[1]² + ... + x[n]²) zurück. &lt;br /&gt;
* float distance (genType p0, genType p1)&lt;br /&gt;
: Gibt die Distanz zwischen den zwei Vektoren p0 un p1 (= length(p0-p1)) zurück. &lt;br /&gt;
* float dot (genType x, genType y)&lt;br /&gt;
: Gibt das Punktprodukt von x und y zurück (=x[0]*y[0] + x[1]*y[1] + ... + x[n]*y[n]). &lt;br /&gt;
* vec3 cross (vec3 x, vec3 y)&lt;br /&gt;
: Gibt das Kreuzprodukt von x und y zurück. &lt;br /&gt;
* genType normalize (genType x)&lt;br /&gt;
: Normalisiert den Vektor x auf die Länge 1. &lt;br /&gt;
* vec4 ftransform()&lt;br /&gt;
: Nur im Vertex Shader. Die Funktion stellt sicher, das das eingehende Vertex haargenau so transformiert wird wie in der festen Funktionspipeline. gl_Position = ftransform() wird dann also gebraucht, wenn in mehreren Durchgängen sowohl im Shader als auch in der festen Pipeline gerendert wird, um sicherzustellen das in beiden Fällen die gleiche Vertexposition herauskommt. &lt;br /&gt;
* genType faceforward (genType N, genType I, genType Nref)&lt;br /&gt;
: Gibt einen nach vorne zeigenden Vektor N zurück. (If dot(NRef, I) &amp;lt; 0 return N else return -N) &lt;br /&gt;
* genType reflect (genType I, genType N)&lt;br /&gt;
: Gibt den an der Flächenausrichtung N reflektierten Vektor I zurück. (=I-2 * dot(N,I) * N) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Matrixfunktionen==&lt;br /&gt;
* mat matrixCompMult (mat x, mat y)&lt;br /&gt;
: Multipliziert Matrix X mit Matrix Y komponentenweise. Um eine normale lineare Matrixmultiplikation durchzuführen, sollte der &amp;quot;*&amp;quot;-Operator genutzt werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Vektorvergleiche==&lt;br /&gt;
Die meisten Vektorvergleichsfunktionen liefern als Ergebnis einen boolvektor zurück, da die Vergleiche per Komponente stattfinden. Wenn man also x = vec4(1.0, 3.0, 0.0, 0.0) mit y = vec4(2.0, 1.5, 1.5, 0.0) via lessThan(x, y) vergleicht, erhält man als Ergebnis bvec(true, false, true, false).&lt;br /&gt;
&lt;br /&gt;
* bvec lessThan (vec x, vec y)&lt;br /&gt;
* bvec lessThan (ivec x, ivec y)&lt;br /&gt;
: Gibt den komponentenweisen Vergleich x &amp;lt; y zurück. &lt;br /&gt;
* bvec lessThanEqual (vec x, vec y)&lt;br /&gt;
* bvec lessThanEqual (ivec x, ivec y)&lt;br /&gt;
: Gibt den komponentenweisen Vergleich x &amp;lt;= y zurück. &lt;br /&gt;
* bvec greaterThan (vec x, vec y)&lt;br /&gt;
* bvec greaterThan (ivec x, ivec y)&lt;br /&gt;
: Gibt den komponentenweisen Vergleich x &amp;gt; y zurück. &lt;br /&gt;
* bvec greaterThanEqual (vec x, vec y)&lt;br /&gt;
* bvec greaterThanEqual (ivec x, ivec y)&lt;br /&gt;
: Gibt den komponentenweisen Vergleich x &amp;gt;= y zurück. &lt;br /&gt;
* bvec equal (vec x, vec y)&lt;br /&gt;
* bvec equal (ivec x, ivec y)&lt;br /&gt;
* bvec equal (bvec x, bvec y)&lt;br /&gt;
: Gibt den komponentenweisen Vergleich x == y zurück. &lt;br /&gt;
* bvec notEqual (vec x, vec y)&lt;br /&gt;
* bvec notEqual (ivec x, ivec y)&lt;br /&gt;
* bvec notEqual (bvec x, bvec y)&lt;br /&gt;
: Gibt den komponentenweisen Vergleich x != y zurück. &lt;br /&gt;
* bool any (bvec x)&lt;br /&gt;
: Liefert true zurück, wenn mindestens eine der Komponenten von x true ist.&lt;br /&gt;
* bool all (bvec x)&lt;br /&gt;
: Liefert true zurück, wenn alle Komponenten von x true sind. &lt;br /&gt;
* bvec not (bvec x)&lt;br /&gt;
: Liefert die logische Negation von x zurück. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Texturenzugriffe==&lt;br /&gt;
&lt;br /&gt;
Diese wichtige Funktionskategorie dient dazu, Werte aus einer an eine Textureinheit gebundenen Textur zu ermitteln. Die Texturenzugriffe können sowohl im Vertex (!) als auch im Fragment Shader ausgeführt werden, wobei der optionale Parameter bias im Vertex Shader ignoriert wird. Allerdings gibt es zusätzlich Funktionen die auf &amp;quot;Lod&amp;quot; enden und nur im Vertex Shader genutzt werden dürfen um eben dieses Manko zu umgehen. Funktionen mit dem Suffix &amp;quot;Proj&amp;quot; geben einen projizierten Texturenwert zurück.&lt;br /&gt;
&lt;br /&gt;
: '''1D-Texturen :'''&lt;br /&gt;
* vec4 texture1D (sampler1D sampler, float coord [, float bias])&lt;br /&gt;
* vec4 texture1DProj (sampler1D sampler, vec2 coord [, float bias])&lt;br /&gt;
* vec4 texture1DProj (sampler1D sampler, vec4 coord [, float bias])&lt;br /&gt;
: Nur im Vertex Shader :&lt;br /&gt;
* vec4 texture1DLod (sampler1D sampler, float coord, float lod)&lt;br /&gt;
* vec4 texture1DProjLod (sampler1D sampler, vec2 coord, float lod)&lt;br /&gt;
* vec4 texture1DProjLod (sampler1D sampler, vec4 coord, float lod)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: '''2D-Texturen :'''&lt;br /&gt;
* vec4 texture2D (sampler2D sampler, vec2 coord [, float bias])&lt;br /&gt;
* vec4 texture2DProj (sampler2D sampler, vec3 coord [, float bias])&lt;br /&gt;
* vec4 texture2DProj (sampler2D sampler, vec4 coord [, float bias])&lt;br /&gt;
: Nur im Vertex Shader : &lt;br /&gt;
* vec4 texture2DLod (sampler2D sampler, vec2 coord, float lod)&lt;br /&gt;
* vec4 texture2DProjLod (sampler2D sampler, vec3 coord, float lod)&lt;br /&gt;
* vec4 texture2DProjLod (sampler2D sampler, vec4 coord, float lod)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: '''3D-Texturen :'''&lt;br /&gt;
* vec4 texture3D (sampler3D sampler, vec3 coord [, float bias])&lt;br /&gt;
* vec4 texture3DProj (sampler3D sampler, vec4 coord [, float bias])&lt;br /&gt;
: Nur im Vertex Shader : &lt;br /&gt;
* vec4 texture3DLod (sampler3D sampler, vec3 coord, float lod)&lt;br /&gt;
* vec4 texture3DProjLod (sampler3D sampler, vec4 coord, float lod)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: '''Cubemap :'''&lt;br /&gt;
* vec4 textureCube (samplerCube sampler, vec3 coord [, float bias])&lt;br /&gt;
: Nur im Vertex Shader : &lt;br /&gt;
*vec4 textureCubeLod (samplerCube sampler, vec3 coord, float lod)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: '''Tiefentextur (Shadowmap) :'''&lt;br /&gt;
* vec4 shadow1D (sampler1DShadow sampler, vec3 coord [, float bias])&lt;br /&gt;
* vec4 shadow2D (sampler2DShadow sampler, vec3 coord [, float bias])&lt;br /&gt;
* vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord [, float bias])&lt;br /&gt;
* vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord [, float bias])&lt;br /&gt;
: Nur im Vertex Shader :&lt;br /&gt;
* vec4 shadow1DLod (sampler1DShadow sampler, vec3 coord, float lod)&lt;br /&gt;
* vec4 shadow2DLod (sampler2DShadow sampler, vec3 coord, float lod)&lt;br /&gt;
* vec4 shadow1DProjLod (sampler1DShadow sampler, vec4 coord, float lod)&lt;br /&gt;
* vec4 shadow2DProjLod (sampler2DShadow sampler, vec4 coord, float lod)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wie bereits eingangs gesagt ist dieses Kapitel ein sehr wichtiges, denn eine 3D-Szene ohne Texturen ist heute kaum denkbar. Darüber hinaus lassen sich durch Texturenzugriffe recht viele interessante Sachen machen, z.B. ein einfacher Blurfilter oder das freie überblenden bestimmter Texturenteile. Deshalb führe ich hier kurz ein paar Beispiele an, welche die Nutzung dieser Funktionen verdeutlichen sollen :&lt;br /&gt;
&lt;br /&gt;
===Beispiel A=== &lt;br /&gt;
Eine Textur gebunden die einfach ausgegeben werden soll&lt;br /&gt;
&lt;br /&gt;
''Im Vertex Shader'' :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
 gl_Position     = gl_ModelViewProjectionMatrix * gl_Vertex;&lt;br /&gt;
 gl_TexCoord[0]  = gl_MultiTexCoord0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
Der Vertex Shader ist recht minimal. Neben der homogenen Vertexposition leiten wir hier nur die im OpenGL-Programm angegebenen Texturkoordinaten weiter. ''Dies ist aber unbedingt nötig!'' Ohne die letzte Zeile hätten wir im Fragment Shader keine gültigen Texturkoordinaten auf TMU0, was in einer Fehldarstellung enden würde.&lt;br /&gt;
&lt;br /&gt;
''im Fragment Shader'' :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
uniform sampler2D texSampler;&lt;br /&gt;
&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
 gl_FragColor = texture2D(texSampler, vec2(gl_TexCoord[0]));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Zuerst deklarieren wir hier einen 2D-Texturensampler, wichtig : '''Texturensampler müssen IMMER als uniform deklariert werden!''' In der Hauptfunktion weisen wir dann einfach den über die Funktion texture2D aus unserer gebundenen Textur ausgelesenen Farbwert, anhand der vom Vertex Shader übergebenen Texturkoordinaten, zu.&lt;br /&gt;
{{Vorlage:Hinweis|Der Uniform-Integer für den Sampler referenziert '''nicht''' den Namen (die ID) des Texturobjektes, sondern die Nummer der Texturunit.}}&lt;br /&gt;
&lt;br /&gt;
===Beispiel B=== &lt;br /&gt;
Zwei Texturen, jeweils auf TMU0 und TMU1. Fragmentfarbe soll eine Multiplikation der beiden Texturen darstellen.&lt;br /&gt;
&lt;br /&gt;
In diesem Beispielfall (der recht häufig vorkommt) müssen wir im Programm festlegen, ''welcher Sampler welche Textureinheit adressiert'', genau deshalb müssen die Texturensampler auch als uniform deklariert werden. Die Standardtextureneinheit eines Samplers ist TMU0, was in unserem Falle natürlich nicht brauchbar ist. Also müssen wir unserem zweiten Textursampler im Programm mitteilen das er seine Daten aus TMU1 beziehen soll :&lt;br /&gt;
&lt;br /&gt;
 glUniform1iARB(glSlang_GetUniLoc(ProgramObject, 'texSamplerTMU1'), 1);&lt;br /&gt;
&lt;br /&gt;
Dies ist also unbedingt zu machen, sobald ein Texturensampler eine Textureinheit &amp;gt; GL_TEXTURE_0 adressieren will. Die Textureneinheit des Samplers lässt sich also nicht im Shader selbst festlegen. Der Fragment Shader ist nun allerdings schnell hergeleitet (Vertex Shader verändert sich nicht, da TMU1 die Texturkoordinaten auch von TMU0 bezieht) :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
im Fragment Shader :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
uniform sampler2D texSamplerTMU0;&lt;br /&gt;
uniform sampler2D texSamplerTMU1;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
    gl_FragColor = texture2D(texSamplerTMU0, vec2(gl_TexCoord[0])) *&lt;br /&gt;
                   texture2D(texSamplerTMU1, vec2(gl_TexCoord[0]));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Noisefunktionen==&lt;br /&gt;
Sowohl im Vertex als auch im Fragment Shader lassen sich [[GLSL noise|Noisefunktionen]] nutzen, mit deren Hilfe sich eine gewisse &amp;quot;Zufälligkeit&amp;quot; simulieren lässt (wirklich zufällige Werte sind es natürlich nicht). Ein zurückgegebener Wert liegt dabei immer im Bereich [-1..1] und ist immer bei gleichem Eigabewert auch immer gleich. Die Verwendung empfiehlt sich derzeit allerdings eher nicht, da nicht alle aktuellen Treiber die Funktionen unterstützen und eine Noisetextur wahrscheinlich performanter ist.&lt;br /&gt;
&lt;br /&gt;
* float noise1 (genType x)&lt;br /&gt;
* vec2 noise2 (genType x)&lt;br /&gt;
* vec3 noise3 (genType x)&lt;br /&gt;
* vec4 noise4 (genType x)&lt;br /&gt;
&lt;br /&gt;
==Discard==&lt;br /&gt;
Eigentlich keine Funktion, sondern eine Abbruchbedingung '''nur im Fragment Shader'''. Das Schlüsselwort {{INLINE_CODE|discard}} verwirft das aktuell bearbeitete Fragment und beendet gleichzeitig den Shader. Es kann z.B. genutzt werden um Alphamasking manuell durchzuführen.&lt;br /&gt;
Man sollte dabei jedoch beachten dass ein Großteil der aktuellen Hardware kein &amp;quot;early-out&amp;quot; (frühes Beenden) im Fragmentshader unterstützt. Wenn dort also ein {{INLINE_CODE|discard}} auftaucht, wird trotzdem auch der Code danach ausgeführt und einfach verworfen. Einen Geschwindigkeitsvorteil durch diesen Befehl wird man also erst auf neueren Karten feststellen, die dieses Faeature auch so unterstützen wie es angedacht war. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Beispielshader=&lt;br /&gt;
Wen bis hierhin nicht der Mut verlassen hat, und wer aufmerksam gelesen hat, dürfte jetzt also zumindest in der Lage sein kleinere Shader in glSlang zu schreiben und diese auch im Programm zu nutzen. Ich habe im Themenbereich &amp;quot;glSlang&amp;quot; versucht alle Bereiche der Shadersprache selbst anzusprechen und hoffe das auch brauchbar rübergebracht zu haben. Um oben erlerntes (hoffe ich doch mal) nochmal zu vertiefen werde ich jetzt (wie ich das bereits bei meinem ARB_VP-Tutorial getan habe) einen simplen Beispielshader (Vertex und Fragment Shader) auseinanderpflücken um so u.a. auch die Programmstruktur für alle die in C nicht so bewandert sind zu erörtern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Der Vertex Shader==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
uniform vec4 GlobalColor;&lt;br /&gt;
&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
 gl_Position     = gl_ModelViewProjectionMatrix * gl_Vertex;&lt;br /&gt;
 gl_FrontColor   = gl_Color * GlobalColor;&lt;br /&gt;
 gl_TexCoord[0]  = gl_MultiTexCoord0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie gesagt recht simpel. Angefangen wird mit der Deklaration einer globalen Uniformvariable namens {{INLINE_CODE|GlobalColor}}. Wie wir uns erinnern gibt der Typenqualifizierer uniform an, das wir den Wert dieser Variable (ein 4-Komponentenvektor, da Farbwerte aus R,G,B und A bestehen) in unserem Programm an den Shader übermitteln.&lt;br /&gt;
&lt;br /&gt;
Danach gehts ohne Umwege direkt in unsere Hauptfunktion, da wir im Vertex Shader keine anderen Funktionen benötigen. Dort berechnen wir zuerst die homogene Position unseres Vertex, die sich aus der eingehenden Vertexposition multipliziert mit der Modelansichtsmatrix ergibt. Wie schonmal gesagt '''muss diesem Wert etwas zugewiesen werden''', da sonst alle darauf aufbauenden Funktionen unvorhersehbare Ergebnisse liefern.&lt;br /&gt;
Ausserdem wollen wir die Frontfarbe unseres Vertex jedesmal mit der im Programm übergebenen GlobalColor multiplizieren, so dass wir den Farbwert der gesamten Szene aus unserem Programm heraus manipulieren können. Zu guterletzt geben wir dann noch unsere aus der festen Funktionspipeline erhaltenen Texturkoordinaten auf Textureinheit 0 weiter. Wenn im Fragmentshader Texturkoordinaten verwendet werden, '''muss das getan werden'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Der Fragment Shader==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
uniform sampler2D Texture0;&lt;br /&gt;
uniform sampler2D Texture1;&lt;br /&gt;
uniform sampler2D Texture2;&lt;br /&gt;
uniform sampler2D Texture3;&lt;br /&gt;
&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
 vec2 TexCoord = vec2( gl_TexCoord[0] );&lt;br /&gt;
 vec4 RGB      = texture2D( Texture0, TexCoord );&lt;br /&gt;
&lt;br /&gt;
 gl_FragColor  = texture2D(Texture1, TexCoord) * RGB.r +&lt;br /&gt;
                 texture2D(Texture2, TexCoord) * RGB.g +&lt;br /&gt;
                 texture2D(Texture3, TexCoord) * RGB.b;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auch hier passiert nicht wirklich viel Großartiges. Wir deklarieren beim Shaderanfang zuerst vier Texturensampler, da wir insgesamt vier verschiedene Texturen im Shader auslesen wollen, eine Verlaufstextur und drei Oberflächentexturen. Auch hier sei wieder gesagt das man Sampler '''immer als uniform deklarieren muss'''. In der Hauptfunktion deklarieren wir dann einen Farbvektor, der auch direkt einen Farbwert aus Textureinheit 0 zugewiesen bekommt. Auf Textureinheit 0 haben wir ihm Hauptprogramm eine Verlaufstextur gebunden, die angibt wie die drei folgenden Texturen ineinander geblendet werden.&lt;br /&gt;
Danach schreiben wir dann den Farbwert des Fragmentes, der '''im Fragment Shader ausgegeben werden muss'''. Der besteht wie einfach zu erkennen aus Farbwert von Textureinheit 1 * Rotwert von Textureinheit 0 + Farbwert von Textureinheit 2 * Grünwert von Textureinheit 0 + Farbwert von Textureinheit 3 * Blauwert von Textureinheit 0. So ist z.B. an Stellen an denen in der Verlaufstextur reines blau liegt nur die dritte Textur sichtbar.&lt;br /&gt;
&lt;br /&gt;
So viel also zu unserem kleinen Beispielshader. Er ist weder besonders toll noch besonders sinnvoll, sollte aber auch eher dazu dienen euch glSlang ein wenig zu veranschaulichen, was mir hoffentlich gelungen ist.&lt;br /&gt;
&lt;br /&gt;
Wenn ihr in den vorangegangenen Kapiteln zumindest ein wenig aufgepasst habt, dann könnt ihr euch vor eurem inneren Auge hoffentlich vortstellen was der Shader macht : Er blendet drei Texturen weich anhand der Verlaufstextur ineinander über. Sowas kann man z.B. für ein Terrain nutzen, um dieses anhand einer Farbtextur zu texturieren. Für alle, die damit Probleme haben hier zwei Bilder die den Shader veranschaulichen. Links die Verlaufstextur, die angibt wo welche Textur wie stark gewichtet wird und rechts dann das Ergebnis :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt; [[BILD:GLSL_sample_shader_a.jpg]] [[BILD:GLSL_sample_shader_b.jpg]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Post Mortem=&lt;br /&gt;
Das wars also, meine &amp;quot;Einführung&amp;quot; in die OpenGL Shader Sprache. Ich hoffe es hat euch nicht gelangweilt und auch die von mir zur Verfügung gestellten Informationen haben euch hoffentlich ausgereicht. Mit der Veröffentlichung dieser Einführung geht übrigens auch die Eröffnung eines Shaderforums hier auf der DGL einher, in der ihr dann also fleissig Fragen zum Thema stellen oder eure Shader präsentieren könnt. In diesem Post Mortem gehe ich jetzt noch kurz auf die Zukunft von glSlang ein und zeige ein paar Screenshots (damit die Augen entspannen können), bevor ihr euch dann selbst in die Shaderwelt stürzen könnt. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Beispiele=&lt;br /&gt;
&lt;br /&gt;
Anbei ein paar exemplarische Screenshots. Da man mit GLSL aber alle möglichen Effekte berechnen kann (u.a. auch 1:1 die feste Funktionspipeline) ist es hier unmöglich einen Überblick aller möglichen Techniken zu geben.&lt;br /&gt;
&lt;br /&gt;
[[Datei:tut_glsl_eigenershader_01.png]] [[Datei:tut_glsl_eigenershader_02.png]] [[Datei:tut_glsl_eigenershader_03.png]]&lt;br /&gt;
&lt;br /&gt;
Wie im ersten (und dritten) Screenshot zu sehen ist es natürlich auch möglich mehrere Techniken innerhalb einer Szene zu nutzen. Hier sind letztendlich bis auf Hardwarelimitationen keine Grenzen gesetzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Die Zukunft=&lt;br /&gt;
Als dieses Tutorial geschrieben wurde, war noch nicht ganz abzusehen dass bzw. ob sich GLSL auch durchsetzen würde. ARB-Shadr und NVidias cG waren damals die Platzhirsche, aber inzwischen werden ARB-Shader nicht mehr genutzt (und auch schon länger nicht mehr weiterentwickelt) und auch NVidia setzt primär auf GLSL. GLSL wird permanent weiterenwtickelt und Hersteller können dank des flexiblen Extensionsystems auch in GLSL eigene Extensions offenlegen um die aktuellsten Features (wie z.b. den Tesselator auf aktuellen ATI-Karten) nutzen zu können. GLSL it als inzwischen auch offizielle die Shadersprache frü OpenGL und wird permanent an die neusten technischen Entwicklungen im Grafikkartenbereich angepasst.&lt;br /&gt;
&lt;br /&gt;
Wer also unter OpenGL etwas mit Shadern machen möchte, kommt an GLSL nicht vorbei!&lt;br /&gt;
&lt;br /&gt;
Also viel Spaß beim Experimentieren und Shaderschreiben! Und nicht vergessen : Wir wollen sehen was ihr so treibt,&lt;br /&gt;
&lt;br /&gt;
Euer&lt;br /&gt;
:Sascha Willems&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{TUTORIAL_NAVIGATION|-|[[Tutorial_glsl2]]}}&lt;br /&gt;
[[Kategorie:Tutorial|GLSL]]&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Benutzer:Lord_Horazont/Tutorial_Versionskontrolle_mit_GIT&amp;diff=25491</id>
		<title>Benutzer:Lord Horazont/Tutorial Versionskontrolle mit GIT</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Benutzer:Lord_Horazont/Tutorial_Versionskontrolle_mit_GIT&amp;diff=25491"/>
				<updated>2012-03-04T11:43:52Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Versionskontrolle mit git =&lt;br /&gt;
&lt;br /&gt;
Hallo und herzlich willkommen zu meinem dritten Tutorial. Heute soll's um Versionskontrolle gehen und zwar demonstriert anhand von git. Warum überhaupt Versionskontrolle? Warum für Hobbyprojekte? Was ist git? Wie macht man das? – diese und andere Fragen werde ich (hoffentlich) beantworten.&lt;br /&gt;
&lt;br /&gt;
== Theorie der Versionskontrolle ==&lt;br /&gt;
&lt;br /&gt;
Nun, jeder der schon einmal einen Wikiartikel geschrieben hat, hatte schon indirekt Kontakt mit Versionskontrolle. Sowas ist nämlich in jedes MediaWiki eingebaut. Immer, wenn man einen Artikel bearbeitet, wird die vorherige Version erhalten, man kann sie später anschauen oder Änderungen rückgängig machen.&lt;br /&gt;
&lt;br /&gt;
Dies gibts nicht nur für Webseiten wie unser Wiki, sondern, in anderer Form, auch für Projekte. Viele werden schonmal irgendwo SVN oder CVS gehört haben, weniger von GIT oder Mercurial. Diese vier sind vermutlich die populärsten Versionskontrolle-Werkzeuge, die im Moment im Einsatz sind.&lt;br /&gt;
&lt;br /&gt;
== Häufige Probleme… ==&lt;br /&gt;
&lt;br /&gt;
=== Problem 1: Mist gebaut? ===&lt;br /&gt;
Der große Vorteil der Versionskontrolle liegt auf der Hand. Habt ihr schonmal selbstsicher angefangen, an einem Feature zu arbeiten, dann festgestellt, dass es irgendwie nicht ganz so gut läuft wie erwartet und zum schluss einen Haufen Konflikte im Code gehabt? Da hilft meist nur noch eins: Rückgängig drücken, und zwar oft. Mist! Das Undo-Limit der IDE ist erreicht, aber nichtmal die Hälfte der Änderungen wurden rückgängig gemacht. Dann hat man noch die Möglichkeit, auf ein Backup zurückzugreifen (falls das überhaupt existiert), oder eben alles von Hand wieder Rückgängig machen.&lt;br /&gt;
&lt;br /&gt;
=== Problem 2: Zusammenarbeit ===&lt;br /&gt;
Anderes Szenario: Man hat ein Projekt, was gut läuft und was andere (Programmierer) interessant finden. Sie möchten Beitragen, aber natürlich hat man eher wenig Lust immer Archive mit allen Sourcedateien per Mail oder sonstwas zu verschicken. Auch will man den Leuten nicht unbedingt Schreibzugriff auf den eigenen Rechner geben. Also könnte man immer noch, um das Datenvolumen zu reduzieren, Patches verschicken.&lt;br /&gt;
&lt;br /&gt;
== … und ihre Beseitigung durch Versionskontrolle ==&lt;br /&gt;
Aus beiden Szenarien gibt es einen gemeinsamen Ausweg: Versionskontrolle und Repositories solcher müssen her!&lt;br /&gt;
&lt;br /&gt;
Anhand von git sei nun im folgenden gezeigt, wie man die beiden genannten Probleme umgeht. Aber wir wollen von Grund auf anfangen, damit ihr das ganze gleich sofort ausprobieren könnt. Dazu beginnen wir damit, wie man Git verwendet. Es sei vorrausgesetzt, dass ihr mit dem Terminal (oder der git-bash, was nichts weiter als eine Bash mit Git für Windows ist) umgehen könnt. Außerdem sollte Git bzw. die Git-Bash natürlich installiert sein ;).&lt;br /&gt;
&lt;br /&gt;
== Ein Git-Repository anlegen und befüllen ==&lt;br /&gt;
Das ist recht einfach. Wir wechseln (mit {{INLINE CODE|cd}}) in das Verzeichnis, wo wir ein Git-Repository anlegen wollen. Das ist im optimalfall leer oder das Wurzelverzeichnis unseres Projektes. Dann initialisieren wir ein git Repo mit:&lt;br /&gt;
&lt;br /&gt;
 $ git init&lt;br /&gt;
&lt;br /&gt;
War einfach, oder? Jetzt können wir schauen, was git so sagt (vorrausgesetzt, es sind schon Dateien im Verzeichnis, sonst erstmal ein Projekt oder so reinkopieren):&lt;br /&gt;
&lt;br /&gt;
 $ git status&lt;br /&gt;
&lt;br /&gt;
Das sollte eine Ausgabe ähnlich dieser erzeugen:&lt;br /&gt;
 # On branch master&lt;br /&gt;
 #&lt;br /&gt;
 # Initial commit&lt;br /&gt;
 #&lt;br /&gt;
 # Untracked files:&lt;br /&gt;
 #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)&lt;br /&gt;
 #&lt;br /&gt;
 #	&amp;lt;font color=&amp;quot;#7f0000&amp;quot;&amp;gt;a&amp;lt;/font&amp;gt;&lt;br /&gt;
 #	&amp;lt;font color=&amp;quot;#7f0000&amp;quot;&amp;gt;b&amp;lt;/font&amp;gt;&lt;br /&gt;
 nothing added to commit but untracked files present (use &amp;quot;git add&amp;quot; to track)&lt;br /&gt;
Wobei anstatt a und b bei euch vermutlich andere Dateien und Verzeichnisse aufgelistet sind. Diese können wir nun mit:&lt;br /&gt;
 $ git add file1 file2 …&lt;br /&gt;
hinzufügen. Das geht aber auch einfacher:&lt;br /&gt;
 $ git add directory/* # fügt alle Dateien im Verzeichnis directory hinzu (mit Unterverzeichnissen)&lt;br /&gt;
 $ git add directory # wie oben&lt;br /&gt;
 $ git add *.c # fügt alle Dateien, die auf .c enden und im Wurzelverzeichnis liegen hinzu&lt;br /&gt;
 $ git add directory/*.c # könnt ihr sicher erraten: fügt alle Dateien, die auf *.c enden und in directory liegen hinzu (sollte dort ein Ordner auf .c &lt;br /&gt;
enden, wird dieser auch hinzugefügt…)&lt;br /&gt;
 $ git add -A # fügt *alle* dateien, die es im Ordner finden kann, hinzu. Kann zu viel sein, evtl. mit git rm --cached wieder welche entfernen.&lt;br /&gt;
Soweit. Nun haben wir git mitgeteilt, dass wir diese Dateien hinzufügen wollen. Das müssen wir noch ''committen'', sozusagen „amtlich“ machen:&lt;br /&gt;
 $ git commit -v&lt;br /&gt;
Das wird euren bevorzugten Terminal-Editor öffnen und ihr könnt eine Commit-Message eingeben, die später im Log zu diesem „Commit“ auftauchen wird. Ein „Commit“ ist sozusagen ein Satz an Änderungen, der logisch zusammen gehört. Was logisch zusammen gehört, definiert sich daran, was ihr zusammen committed ;). Wenn nichts schief gegangen ist, wird git sowas sagen wie: &lt;br /&gt;
 [master (root-commit) 050a498] * Bla&lt;br /&gt;
  0 files changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 bla/bakery/bread&lt;br /&gt;
  create mode 100644 bla/cookie&lt;br /&gt;
  create mode 100644 bla/keks&lt;br /&gt;
  create mode 100644 c.c&lt;br /&gt;
Ansonsten sollte die Fehlermeldung aufschluss darüber geben, was nicht geklappt hat. Eventuell möchte git, dass ihr ihm sagt, wer ihr seid. Das tut ihr mit den Befehlen, die es euch da vorschlägt. Diese Informationen werden in die Commits mit eingebunden, damit man diese den Entwicklern zuordnen kann.&lt;br /&gt;
&lt;br /&gt;
== Änderungen durchführen und committen ==&lt;br /&gt;
Nun können wir an unserem Code rumschreiben. Wenn wir einen Schritt weiter zu unserem Ziel gekommen sind, können wir die Änderungen ins Repo committen. Ich mache das meist, wenn ich kompilierfähigen Code habe oder wenn ich einen größeren Schritt erledigt habe oder wenn ich von einer logischen Einheit des Codes in eine andere wechsle (z.B. unterschiedliche Packages oder Module). Jetzt können wir entweder alle Dateien, die wir geändert oder neu hinzugefügt haben mit&lt;br /&gt;
 $ git add path/to/file.pp path/to/file2.pp&lt;br /&gt;
“stagen”, d.h. für den Commit vorsehen, oder wir nutzen&lt;br /&gt;
 $ git commit -av&lt;br /&gt;
wobei das “a” in der Kommandozeile sagt, dass es automatisch alle geänderten Dateien mit in den Commit aufnehmen soll. Beachtet aber, dass es neu erstellte Dateien nicht als “changed” sondern als “untracked” sieht, also werden sie nicht beachtet. Neu erstellte Dateien muss man explizit mit &lt;br /&gt;
 $ git add path/to/new/file.pp&lt;br /&gt;
ankündigen. Das kann man aber ohne Probleme zusammen mit {{INLINE CODE|git commit -av}} benutzen, sodass man nur die neu erstellten Dateien mit {{INLINE CODE|git add}} stage't, aber die anderen mit {{INLINE CODE|git commit -av}}.&lt;br /&gt;
&lt;br /&gt;
 $ git log&lt;br /&gt;
sollte nun schon ein paar schöne Commits ausgeben.&lt;br /&gt;
&lt;br /&gt;
== Pushs, Fetchs, Merges, Pulls und Branches ==&lt;br /&gt;
Ähhh. Was? Ok, der Reihe nach.&lt;br /&gt;
&lt;br /&gt;
Was wir bisher haben ist eigentlich nichts weiter als eine History von Dateiversionen. Das ist schonmal sehr schön, wenn mal was abbrennt (man also einen kritischen Fehler beim Entwickeln gemacht hat und zu einem alten Stand zurückkehren möchte), aber das ist bei weitem nicht alles, was man in moderner Versionskontrolle hat (und zu schätzen lernen wird).&lt;br /&gt;
&lt;br /&gt;
Zunächst ist git ein sogenanntes DVCS, ein ''Distributed Version Control System''. Das Distributed lässt erahnen, dass wir Daten auch auf anderen Rechnern haben können. Wer einen eigenen Server hat (sei es nun zu Hause oder im Internet), der kann mit [http://sitaramc.github.com/gitolite/ gitolite] ganz einfach einen sicheren git Repository Server aufsetzen. Für Public Access findet man auch schnell was im Internet.&lt;br /&gt;
&lt;br /&gt;
Der Vorteil liegt auf der Hand: Die Daten liegen nicht mehr nur auf einem Rechner. Wenn da also mal die Festplatte abraucht oder der Blitz einschlägt – der Code ist sicher (ausreichende Push-Frequenz vorrausgesetzt). Man hat die Daten sogar Unterwegs zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
Ich möchte jetzt nicht genau darauf eingehen, wie man mit gitolite einen Repository-Server aufsetzt, sondern lieber ein bisschen die Bedienung von git erläutern und ein paar Beispiele durchgehen.&lt;br /&gt;
&lt;br /&gt;
=== Branches ===&lt;br /&gt;
Wer noch nicht viel mit Versionskontrolle zu tun hat, dem sei das Konzept von Branches ans Herz gelegt.&lt;br /&gt;
&lt;br /&gt;
=== Clones, Fetches und Pulls ===&lt;br /&gt;
Wenn man an einem mit git verwalteten Projekt mitmachen möchte, wird man häufig auf so eine Kommandozeile stoßen:&lt;br /&gt;
 $ git clone https://...&lt;br /&gt;
Das ist der Befehl, um ein Git-Repository zu klonen, wobei die Quelle als ''remote'' names ''origin'' eingetragen wird. Das ist so git Tradition und sollte nicht unbedingt gebrochen werden (kann aber ohne weiteres).&lt;br /&gt;
&lt;br /&gt;
Ein ''remote'' ist erstmal nicht viel mehr als ein Eintrag in Git's „Datenbank“, wo es Commits herbekommen kann und welche ''branches'' dort existieren.&lt;br /&gt;
&lt;br /&gt;
== “A successful git branching model” ==&lt;br /&gt;
Auf [http://nvie.com/posts/a-successful-git-branching-model/ dieser Seite] bin ich auf ein sehr hilfreiches Arbeitsmodell für das Arbeiten mit Branches unter Git gestoßen. Das könnt ihr euch am besten Ausdrucken und an die Wand pinnen.&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Benutzer:Lord_Horazont&amp;diff=25490</id>
		<title>Benutzer:Lord Horazont</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Benutzer:Lord_Horazont&amp;diff=25490"/>
				<updated>2012-03-04T11:33:53Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: /* Working drafts */ Zu blöd zum tippen der gute ....&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also grundsätzlich werde ich nicht beständig am Wiki arbeiten, sondern immer dann, wenn ich einen Befehl, beispielsweise die SDLNET-Befehle verwende und hier keine Dokumentation finde. Dann werde ich wohl diese wohl auch übersetzen.&lt;br /&gt;
&lt;br /&gt;
So langsam beginne ich auch, Tutorials zu schreiben. Das ist vorallem während größeren Projekten so, wenn ich selber viele Techniken implementiere und lerne. Das Wissen gebe ich gerne an die Community weiter.&lt;br /&gt;
&lt;br /&gt;
== Tutorials von mir ==&lt;br /&gt;
* [[Tutorial_SDL_RWops|Tutorial SDL_RWops]]&lt;br /&gt;
* [[Tutorial_Wassereffekt|Tutorial Wassereffekt]]&lt;br /&gt;
&lt;br /&gt;
== Working drafts ==&lt;br /&gt;
* [[Benutzer:Lord_Horazont/Tutorial_Versionskontrolle_mit_GIT|Tutorial: Versionskontrolle mit git]]&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Normale&amp;quot; Artikel von mir ==&lt;br /&gt;
Einfach unter &amp;quot;werkzeuge&amp;quot; auf Benutzerbeiträge klicken, für die wohl eher wenigen, die es interessiert ;)&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Benutzer:Lord_Horazont&amp;diff=25489</id>
		<title>Benutzer:Lord Horazont</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Benutzer:Lord_Horazont&amp;diff=25489"/>
				<updated>2012-03-04T11:33:31Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also grundsätzlich werde ich nicht beständig am Wiki arbeiten, sondern immer dann, wenn ich einen Befehl, beispielsweise die SDLNET-Befehle verwende und hier keine Dokumentation finde. Dann werde ich wohl diese wohl auch übersetzen.&lt;br /&gt;
&lt;br /&gt;
So langsam beginne ich auch, Tutorials zu schreiben. Das ist vorallem während größeren Projekten so, wenn ich selber viele Techniken implementiere und lerne. Das Wissen gebe ich gerne an die Community weiter.&lt;br /&gt;
&lt;br /&gt;
== Tutorials von mir ==&lt;br /&gt;
* [[Tutorial_SDL_RWops|Tutorial SDL_RWops]]&lt;br /&gt;
* [[Tutorial_Wassereffekt|Tutorial Wassereffekt]]&lt;br /&gt;
&lt;br /&gt;
== Working drafts ==&lt;br /&gt;
* [[Benutzer:Lord_Horazont/Tutorial_Versionskontrolle_mit_GIT Tutorial: Versionskontrolle mit git]]&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Normale&amp;quot; Artikel von mir ==&lt;br /&gt;
Einfach unter &amp;quot;werkzeuge&amp;quot; auf Benutzerbeiträge klicken, für die wohl eher wenigen, die es interessiert ;)&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Checkliste_Shader&amp;diff=25488</id>
		<title>Checkliste Shader</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Checkliste_Shader&amp;diff=25488"/>
				<updated>2012-03-01T09:37:07Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Verwendung der Checkliste==&lt;br /&gt;
Die nachfolgende Checkliste sollte nach und nach abgearbeitet werden um einfache Fehler auszuschließen.&lt;br /&gt;
Wenn ein Punkt mit ja beantwortet werden kann, kann man den nächsten Punkt angehen.&lt;br /&gt;
&lt;br /&gt;
Die Grundlagen sollen ausschließen, dass Fehler existieren noch bevor der Shader ins Spiel kommt.&lt;br /&gt;
&lt;br /&gt;
==Grundlagen==&lt;br /&gt;
*'''Benutze ich 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;
*'''Funktioniert das Programm ohne Shader?'''&lt;br /&gt;
:Kommentiere allen Shader Code aus, bzw. umgehe den Shadercode falls möglich und prüfe die Ausgabe um sicherzustellen, dass nicht andere Teile der Ausgabe den Fehler verursachen (z.B. Z-Buffer, Blending etc.)&lt;br /&gt;
&lt;br /&gt;
*'''Läuft das Programm ohne OpenGL-Fehler zu produzieren?'''&lt;br /&gt;
:Benutzen sie einen Error-Handler wie er im &amp;quot;[[Tutorial_quickstart]]&amp;quot; beschrieben wird, um dies zu testen.&lt;br /&gt;
&lt;br /&gt;
*'''Unterstützt die Grafikkarte überhaupt Shader?'''&lt;br /&gt;
:Fragen Sie die OpenGL Version ab. Es wird mindestens OpenGL Version 2.0 oder 1.5 mit den Extensions, die [http://wiki.delphigl.com/index.php/Tutorial_glsl#Voraussetzungen hier] aufgelistet sind, benötigt. Siehe [[glGetString]]&lt;br /&gt;
&lt;br /&gt;
==Problemspezifisches==&lt;br /&gt;
*'''Funktioniert die Fehlerabfrage beim Shaderbau?'''&lt;br /&gt;
:Bauen Sie versuchsweise etwas in den Shader ein, was Compilefehler verursachen muss und prüfen sie ob die Meldung entsprechend geloggt wird.&lt;br /&gt;
&lt;br /&gt;
*'''Läßt sich der Shader kompilieren?'''&lt;br /&gt;
:Prüfen Sie, ob der Code wirklich korrekt an [[glShaderSource]]() übergeben wird (einfach einen Haltepunkt setzen).&lt;br /&gt;
&lt;br /&gt;
*'''Wurden die Uniforms erst gesetzt als der Shader gebunden war?'''&lt;br /&gt;
:Ein ''beliebter'' Fehler: Stellen Sie sicher dass Uniforms erst gesetzt werden nachdem der Shader gebunden war.&lt;br /&gt;
&lt;br /&gt;
*'''Werden Vektortransformationen korrekt durchgeführt?'''&lt;br /&gt;
:Will man einen vec3-Vektor mithilfe einer mat4-Matrix transformieren, so muss man ihn erst in einen vec4 umwandeln. Dabei sollte die w-Komponente den Wert 1.0 bekommen (Imitation von [[glVertex3f]]).&lt;br /&gt;
&lt;br /&gt;
*'''Wird der Fragmentshader überhaupt ausgeführt?'''&lt;br /&gt;
:Den Fragmentshader einfach mal eine konstante Farbe (ungleich der Hintergrundfarbe) ausgeben lassen um zu sehen ob dieser überhaupt ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
*'''Entspricht die Ausgabe nicht den erwarteten Beleuchtungsergebnissen?'''&lt;br /&gt;
:Checken ob die Normalen richtig sind. Dazu einfach im Fragmentshader die Normale als Farbe ausgeben. Die Farbe sollte sich je nach Ausrichtung einer Fläche zur Kamera ändern. Zur Kamera gewandte Flächen sollten bläulich erscheinen, da die Normale in Richtung der Z-Achse stehen müsste. Es ist oft einen Versuch Wert einfach mal das Vorzeichen der Normale umzukehren. Damit die Farben gut rauskommen kann dieser Codeschnipsel verwendet werden:&lt;br /&gt;
 gl_FragColor = vec4(normal / 2.0 + 0.5, 1.0);&lt;br /&gt;
&lt;br /&gt;
=== Texturierung ===&lt;br /&gt;
*'''Entspricht die Texturierung nicht den Erwartungen?'''&lt;br /&gt;
:Checken ob die Texturkoordinaten korrekt sind. Auch hier die Texturkoordinaten als Farbwert ausgeben lassen.&lt;br /&gt;
&lt;br /&gt;
*'''Texturkoordinaten stimmen, trotzdem ist die Ausgabe nicht korrekt?''' / '''Texturen werden weiß'''&lt;br /&gt;
:Die Uniform-Integer der Sampler für die Texturen müssen auf die ''Texturunit'' und nicht auf die ID des Texturobjektes gesetzt werden.&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Checkliste_Texturierung&amp;diff=25483</id>
		<title>Checkliste Texturierung</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Checkliste_Texturierung&amp;diff=25483"/>
				<updated>2012-02-11T20:59:26Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: /* Problemspezifisches */ Texturfilter erwähnt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Verwendung der Checkliste==&lt;br /&gt;
Die nachfolgende Checkliste sollte nach und nach abgearbeitet werden um einfache Fehler auszuschließen.&lt;br /&gt;
Wenn ein Punkt mit ja beantwortet werden kann, kann man den nächsten Punkt angehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Grundlagen==&lt;br /&gt;
*'''Benutze ich 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;
*'''Funktioniert das Programm ohne Texturierung?'''&lt;br /&gt;
:Kommentieren Sie allen Texturierungsrelevanten Code aus, und prüfen Sie die Ausgabe.&lt;br /&gt;
&lt;br /&gt;
*'''Läuft das Programm ohne OpenGL-Fehler zu produzieren?'''&lt;br /&gt;
:Benutzen Sie einen Error-Handler wie er im &amp;quot;[[Tutorial_quickstart]]&amp;quot; beschrieben wird, um dies zu testen.&lt;br /&gt;
&lt;br /&gt;
*'''Tritt der Fehler bei der Benutzung eines speziellen Texturloaders auf?'''&lt;br /&gt;
:Lesen Sie die Dokumentation zu dem von ihnen favorisierten Texturloader. z.B: [[Glbitmap_loader|glBitmap.pas]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Problemspezifisches==&lt;br /&gt;
*'''Haben Sie die Texturierung für das entsprechende Objekt aktiviert?'''&lt;br /&gt;
:Falls alle Objekte mit Texturen gezeichnet werden sollen, reicht es beim Setup von OpenGL per [[glEnable]](GL_TEXTURE_2D) Texturierung zu aktivieren.&lt;br /&gt;
:Falls nur einzelne Objekte texturiert werden sollen, muss vor diesem Objekt Texturing aktiviert, und vor den texturlosen Objekten Texturing wieder deaktiviert (glDisable(GL_TEXTURE_2D)) werden.&lt;br /&gt;
&lt;br /&gt;
*'''Haben Sie Texturcoordinaten für die zu texturierenden Objekte festegelegt?'''&lt;br /&gt;
:Texturcoordinaten werden mit [[glTexCoord]] spezifiziert.&lt;br /&gt;
&lt;br /&gt;
*'''Haben Sie die Textur gebunden?'''&lt;br /&gt;
:Der Befehl zum binden von Texturen lautet [[glBindTexture]]. Hierzu gehört natürlich auch, dass die Textur geladen wurde. Dazu benutzt man üblicherweise einen Texturloader. Einige Loader (z.B. [[Glbitmap_loader|glBitmap.pas]]) besitzen eine Funktion namens &amp;quot;bind&amp;quot; welche nach dem Laden das Binden  für sie übernimmt.&lt;br /&gt;
&lt;br /&gt;
*'''Sind die Filter der Textur richtig gesetzt?'''&lt;br /&gt;
:Wenn keine [[Mipmap|Mipmaps]] generiert wurden, bekommt man ohne explizite Filterangabe mittels [[glTexParameteri]] nur eine weiße Ausgabe. Daher die Filter auf nicht-Mipmap-Werte setzen oder Mipmaps, z.B. mit '''GL_GENERATE_MIPMAPS''' erzeugen.&lt;br /&gt;
&lt;br /&gt;
*'''Ist die Textur in einem gültigen Format?'''&lt;br /&gt;
:Texturen müssen im sogenannten &amp;quot;2^n Format&amp;quot; sein. Das heißt das die Seitenlänge der Textur (in Pixel) eine Potenz von 2 sein muss (z.B. 32x32, 64x256, 1024x512). Nur Karten die offiziell den OpenGL2.0 Standard unterstützen können auch andere Formate benutze (z.B. 1024x768, 112x232). (Bei falschen Texturgrößen wird das Objekt sonst einfach farbig und untexturiert gerendert.)&lt;br /&gt;
:Um zu Prüfen welchen Standard ihre Grafikkarte unterstützt lesen sie den Artikel zu [[glGetString]]&lt;br /&gt;
&lt;br /&gt;
==Multitexturing==&lt;br /&gt;
*'''Unterstützt die Zielgrafikkarte Multitexturing?'''&lt;br /&gt;
:Im Tutorial [[Tutorial_MultiTexturing#Schritt_1_-_Hardware_auf_Multitexturing-F.C3.A4higkeit_pr.C3.BCfen|Multitexturing]] wird erklärt, wie man checkt, ob Multitexturing von Grafikkarte und Treiber unterstützt wird.&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Timebased_Movement&amp;diff=25458</id>
		<title>Timebased Movement</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Timebased_Movement&amp;diff=25458"/>
				<updated>2012-01-23T17:52:52Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: /* Berechnung der vergangen Zeit */ Erläuterung für Frequenz&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Kurz-Beschreibung ==&lt;br /&gt;
'''Timebased Movement''' sorgt dafür, dass die Bewegungsgeschwindigkeiten nicht vom CPU-/Renderspeed abhängen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prinzip ==&lt;br /&gt;
Nehmen wir an wir möchten einen Ball darstellen der sich mit konstanter Geschwindigkeit vom linken Bildschirmrand zum rechten Bildschirmrand bewegt.&lt;br /&gt;
&lt;br /&gt;
Das erste Bild wird den Ball ganz links zeigen. Auf dem nächsten Bild wird der Ball ein Stück weiter sein, die Frage ist nur wie weit? Die Länge der Strecke die der Ball zurücklegen muss legen wir nun mal willkürlich auf 1 Längeneinheit (kurz: LE) fest. Die Strecke soll er in 5 Sekunden zurück legen.&lt;br /&gt;
&lt;br /&gt;
Ein Rechner A braucht 1 Sekunde um 1 Bild zu Berechnen. Um das gewünschte Ergebnis zu erreichen müssten wir den Ball nach jedem Bild 0.2 Felder weiterbewegen.&lt;br /&gt;
&lt;br /&gt;
In einer Sekunde hätten wir also folgende Bilder:&lt;br /&gt;
* Bild 0: Ball Position: 0.0&lt;br /&gt;
* Bild 1: Ball Position: 0.2 (weiterbewegt um 0.2 LE in 1.0 Sekunden)&lt;br /&gt;
* Bild 2: Ball Position: 0.4 (weiterbewegt um 0.2 LE in 1.0 Sekunden)&lt;br /&gt;
* Bild 3: Ball Position: 0.6 (weiterbewegt um 0.2 LE in 1.0 Sekunden)&lt;br /&gt;
* Bild 4: Ball Position: 0.8 (weiterbewegt um 0.2 LE in 1.0 Sekunden)&lt;br /&gt;
* Bild 5: Ball Position: 1.0 (weiterbewegt um 0.2 LE in 1.0 Sekunden)&lt;br /&gt;
&lt;br /&gt;
Ein Rechner B braucht nur 0.5 Sekunden um ein Bild zu berechnen.&lt;br /&gt;
&lt;br /&gt;
Ebenfalls in nur einer Sekunde hätten wir folgende Bilder:&lt;br /&gt;
* Bild 0:  Ball Position: 0.0&lt;br /&gt;
* Bild 1:  Ball Position: 0.1 (weiterbewegt um: 0.1 LE in 0.5 Sekunden)&lt;br /&gt;
* Bild 2:  Ball Position: 0.2 (weiterbewegt um: 0.1 LE in 0.5 Sekunden)&lt;br /&gt;
* Bild 3:  Ball Position: 0.3 (weiterbewegt um: 0.1 LE in 0.5 Sekunden)&lt;br /&gt;
* Bild 4:  Ball Position: 0.4 (weiterbewegt um: 0.1 LE in 0.5 Sekunden)&lt;br /&gt;
* Bild 5:  Ball Position: 0.5 (weiterbewegt um: 0.1 LE in 0.5 Sekunden)&lt;br /&gt;
* Bild 6:  Ball Position: 0.6 (weiterbewegt um: 0.1 LE in 0.5 Sekunden)&lt;br /&gt;
* Bild 7:  Ball Position: 0.7 (weiterbewegt um: 0.1 LE in 0.5 Sekunden)&lt;br /&gt;
* Bild 8:  Ball Position: 0.8 (weiterbewegt um: 0.1 LE in 0.5 Sekunden)&lt;br /&gt;
* Bild 9:  Ball Position: 0.9 (weiterbewegt um: 0.1 LE in 0.5 Sekunden)&lt;br /&gt;
* Bild 10: Ball Position: 1.0 (weiterbewegt um: 0.1 LE in 0.5 Sekunden)&lt;br /&gt;
&lt;br /&gt;
Bei dem einen Rechner muss der Ball bei jedem Bild um 0.2 LE bewegt werden, beim andern Rechner nur 0.1 LE pro Bild. Tut man dies nicht, bewegt sich der Ball zu schnell oder zu langsam. &lt;br /&gt;
&lt;br /&gt;
Doch woher weiß man nun wie weit man seinen Ball auf den jeweiligen Rechner pro Bild bewegen muss?&lt;br /&gt;
&lt;br /&gt;
In unserem Beispiel bewegt sich der Ball mit der konstanten Geschwindigkeit von 0.2 LE pro Sekunde. Mit folgender Formel können wir bei konstanter Geschwindigkeit die neue Position berechnen:&lt;br /&gt;
&lt;br /&gt;
 neue_Position = Geschwindigkeit * vergangene_Zeit + alte_Position&lt;br /&gt;
&lt;br /&gt;
Wir brauchen also nur eine Geschwindigkeit festlegen und messen, wie viel Zeit vergangen ist, um die neue Position zu berechnen zu können.&lt;br /&gt;
&lt;br /&gt;
Wohlgemerkt gilt diese Formel nur wenn sich das Objekt mit konstanter Geschwindigkeit fortbewegt.&lt;br /&gt;
&lt;br /&gt;
== Berechnung der vergangen Zeit ==&lt;br /&gt;
&lt;br /&gt;
Allgemein:&lt;br /&gt;
 VergangeneZeit := ( Zeit1 - Zeit0 ) / Frequenz;&lt;br /&gt;
&lt;br /&gt;
Die Frequenz ist hierbei die Timerticks pro Sekunde. Damit ist sie (bei einem 1ms-Timer) gleich dem Umrechnungsfaktor von Sekunden zu Millisekunden, also 1000.&lt;br /&gt;
&lt;br /&gt;
=== Millisekunden genau unter Windows===&lt;br /&gt;
Die wohl einfachste aber auch ungenaueste Möglichkeit unter Windows so etwas zu realisieren besteht darin mit Hilfe von GetTickCount die Zeit (in Millisekunden) seit dem letzen Windows-Start zu ermitteln.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;pascal&amp;quot;&amp;gt;&lt;br /&gt;
//Benötigte Variablen&lt;br /&gt;
var&lt;br /&gt;
  BerechnungsZeit : LongWord;&lt;br /&gt;
  Position        : Double;&lt;br /&gt;
&lt;br /&gt;
procedure BeimStart; // Was hier drinnen steht sollte zum Start ausgeführt werden&lt;br /&gt;
begin&lt;br /&gt;
  BerechnungsZeit := GetTickCount();&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure BerechnungsCheck; // Alle nötigen Berechnungen durchführen&lt;br /&gt;
const&lt;br /&gt;
  Frequenz = 1000; // Durch Windows festgelegt&lt;br /&gt;
var&lt;br /&gt;
  AktuelleZeit : LongWord;&lt;br /&gt;
begin&lt;br /&gt;
  AktuelleZeit := GetTickCount();&lt;br /&gt;
  Berechne((AktuelleZeit - BerechnungsZeit) / Frequenz);&lt;br /&gt;
  BerechnungsZeit := AktuelleZeit;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure Berechne(vergangene_Zeit : Double);&lt;br /&gt;
const&lt;br /&gt;
  Geschwindigkeit = 0.5;&lt;br /&gt;
begin&lt;br /&gt;
  {Alle Berechnungen stehen hier }&lt;br /&gt;
  // z.B.&lt;br /&gt;
  Position := Geschwindigkeit * vergangene_Zeit + Position;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Absolute Genauigkeit per Hardware ===&lt;br /&gt;
Man kann auch die Hardware zur Zeitmessung nutzen um so noch genauere Ergebnisse zu erzielen. Es kann jedoch theoretisch sein, dass diese nicht zur Verfügung steht. Zudem handelt es sich hierbei um reine Windows API-Aufrufe. Bei Verwendung von FreePascal bzw. Lazarus sollte diese Methode also nicht in betracht gezogen werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;pascal&amp;quot;&amp;gt;&lt;br /&gt;
//Benötigte Variablen&lt;br /&gt;
var&lt;br /&gt;
  BerechnungsZeit : Int64;&lt;br /&gt;
  Frequenz        : Int64;&lt;br /&gt;
  Position        : Double;&lt;br /&gt;
&lt;br /&gt;
procedure BeimStart; // Was hier drinnen steht sollte zum Start ausgeführt werden&lt;br /&gt;
begin&lt;br /&gt;
  if not QueryPerformanceFrequency(Frequenz) then // Frequenz ermitteln&lt;br /&gt;
   raise Exception.create('Kein Hardware Timer vorhanden');&lt;br /&gt;
  QueryPerformanceCounter(BerechnungsZeit); // Aktuelle Zeit ermitteln&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure BerechnungsCheck; // Alle nötigen Berechnungen durchführen&lt;br /&gt;
var&lt;br /&gt;
  AktuelleZeit : Int64;&lt;br /&gt;
begin&lt;br /&gt;
  QueryPerformanceCounter(AktuelleZeit);&lt;br /&gt;
  Berechne((AktuelleZeit - BerechnungsZeit) / Frequenz);&lt;br /&gt;
  BerechnungsZeit := AktuelleZeit;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure Berechne(vergangene_Zeit : Double);&lt;br /&gt;
const&lt;br /&gt;
  Geschwindigkeit = 0.5;&lt;br /&gt;
begin&lt;br /&gt;
  {Alle Berechnungen stehen hier }&lt;br /&gt;
  // z.B.&lt;br /&gt;
  Position := Geschwindigkeit * vergangene_Zeit + Position;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man hat nun den Geschwindigkeitsfaktor, den man mit sämtlichen Bewegungen multipliziert. Wenn der PC viele Frames per Second rendert wird der Geschwindigkeitsfaktor klein. Die Bewegungen werden dadurch naturlich auch kleiner. Je niedriger die Ausführungsgeschwindigkeit der Zeichenprozedur, desto höher wird der Geschwindigkeitsfaktor, die Bewegungsschritte also auch größer.&lt;br /&gt;
&lt;br /&gt;
== Konstant Beschleunigte Bewegung ==&lt;br /&gt;
&lt;br /&gt;
Nehmen wir an wir möchten darstellen wie ein Ball zu Boden fällt. Der Ball sei 1 LE über dem Boden und wird dort zum Zeitpunkt 0s losgelassen. Die Kraft welche die Erdanziehung simuliert soll pro Sekunde die Geschwindigkeit des Balles um 1 LE/s erhöhen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die neue Geschwindigkeit die sich durch die Beschleunigung ergeben hat, läßt sich noch sehr einfach Berechnen:&lt;br /&gt;
 neue_Geschwindigkeit := Beschleunigung * vergangene_Zeit + alte_Geschwindigkeit;&lt;br /&gt;
&lt;br /&gt;
Wie sieht es aber mit der Position aus?&lt;br /&gt;
&lt;br /&gt;
Falsch wäre diese Berechnung:&lt;br /&gt;
 neue_Position := alte_Geschwindigkeit * vergangene_Zeit + alte_Position&lt;br /&gt;
Denn so würde sich der Ball von Bild 0 nach Bild 1 gar nicht bewegen.&lt;br /&gt;
&lt;br /&gt;
Genauso falsch wäre diese Berechnung:&lt;br /&gt;
 neue_Position := neue_Geschwindigkeit * vergangene_Zeit + alte_Position&lt;br /&gt;
&lt;br /&gt;
Denn dann würde sich der Ball sofort mit der vollen Geschwindigkeit bewegen und wäre viel zu schnell ab Boden.&lt;br /&gt;
&lt;br /&gt;
Wer sich ein wenig mit Physik auskennt weiß das man bei konstant Beschleunigter Bewegung so die neue Position ausrechnet:&lt;br /&gt;
 neue_Position := 0.5 * Beschleunigung * vergangene_Zeit * vergangene_Zeit + Geschwindigkeit * vergangene_Zeit + alte_Position&lt;br /&gt;
&lt;br /&gt;
Beispielcode:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;pascal&amp;quot;&amp;gt;&lt;br /&gt;
var&lt;br /&gt;
  Position        : Double;&lt;br /&gt;
  Geschwindigkeit : Double;&lt;br /&gt;
procedure Berechne(vergangene_Zeit : Double);&lt;br /&gt;
const&lt;br /&gt;
  Beschleunigung = 1;&lt;br /&gt;
begin&lt;br /&gt;
  Position := 0.5*Beschleunigung * vergangene_Zeit * vergangene_Zeit + Geschwindigkeit * vergangene_Zeit + Position&lt;br /&gt;
  // Wichtig: alte Geschwindigkeit erst ändern wenn sie nicht mehr gebraucht wird.&lt;br /&gt;
  Geschwindigkeit := Beschleunigung * vergangene_Zeit + Geschwindigkeit&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Umsetzung mit einer Delphi Form ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;pascal&amp;quot;&amp;gt;&lt;br /&gt;
var &lt;br /&gt;
[...] &lt;br /&gt;
 Frequency, StartCount, EndCount: Int64; &lt;br /&gt;
 Speedfactor: Extended;&lt;br /&gt;
&lt;br /&gt;
const &lt;br /&gt;
 Scalefactor = 100;       //Der Scalefactor ist ein beliebiger Wert um den Speedfactor&lt;br /&gt;
                          //zu beeinflussen&lt;br /&gt;
[...]&lt;br /&gt;
procedure TForm1.FormCreate(Sender: TObject);&lt;br /&gt;
begin &lt;br /&gt;
 if not QueryPerformanceFrequency(Frequency) then&lt;br /&gt;
  raise Exception.create('Kein Hardware Timer vorhanden');&lt;br /&gt;
 QueryPerformanceFrequency(Frequency); //Frequenz des Rechners ermitteln &lt;br /&gt;
 [...]&lt;br /&gt;
end;&lt;br /&gt;
     &lt;br /&gt;
&lt;br /&gt;
procedure TForm1.IdleHandler(Sender: TObject; var Done: Boolean);&lt;br /&gt;
begin &lt;br /&gt;
 QueryPerformanceCounter(StartCount); //Zeit0 &lt;br /&gt;
 Form1.Render; &lt;br /&gt;
 QueryPerformanceCounter(EndCount); //Zeit1  &lt;br /&gt;
 Speedfactor := ((EndCount - StartCount) /Frequency) * Scalefactor //(Zeit1 - Zeit0) / Frequenz&lt;br /&gt;
 [...]&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man hat nun den Speedfactor, den man mit sämtlichen Bewegungen multipliziert. Und schon hat man eine einfache Umsetzung von Timebased movement, ohne sich über Physik Gedanken machen zu müssen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
*[[Tutorial_Bomberman2#Timebased_Movement]]&lt;br /&gt;
*[[SDL_GetTicks]] - Methode zur Zeitmessung mit SDL&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Link&amp;diff=25439</id>
		<title>Link</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Link&amp;diff=25439"/>
				<updated>2012-01-02T13:15:08Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: /* Texturen / 2D-Grafiken */ Neue Sektion „Sonstige 2D-Grafiken“ mit famfamfam silk Iconset&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
!!!!!!!! NUTZT DIESE TABELLE ALS VORLAGE FÜR WEITERE LINKTABELLEN !!!!!!!&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[Link]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[Link]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Linksammlung soll allgemeine Links zu unterschiedlichen Themen bieten, die mit der Multimediaentwicklung zu tun haben.&lt;br /&gt;
{{Hinweis|Vielleicht ist eine Zusammenführung mit [[Tool]] sinnvoll!}}&lt;br /&gt;
{{Hinweis|Vielleicht ist eine Aufteilung in Unterseiten sinnvoll (möglicherweise mit Kategorien)}}&lt;br /&gt;
&lt;br /&gt;
= Entwicklung mit OpenGL =&lt;br /&gt;
&lt;br /&gt;
== Hardwareinfos ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20090417044334/http://delphi3d.net/hardware/listreports.php OpenGL Hardware Registry - Hardwareübersicht]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Datenbank aller Grafikkarten die in der Harware Registry vorhanden sind. Die einzelnen Artikel enthalten Infos darüber, welche Extensions von der Grafikkarte unterstützt werden.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20090506094005/http://delphi3d.net/hardware/ OpenGL Hardware Registry - Extensionübersicht]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Datenbank aller Extensions die in der Harware Registry vorhanden sind. Die einzelnen Artikel enthalten Infos darüber, welche Grafikkarten die entsprechende Extension unterstützen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
||[[Tutorial|DGL Wiki - Tutorial]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|DelphiGL.com ist Betreiber dieses Wikis und stellt eine Vielzahl Tutorials mit Schwehrpunkt OpenGL zur Verfügung. &lt;br /&gt;
Neben Tutorials für Einsteiger und OpenGL Anfänger gibt es auch fortgeschrittene Themen wie Shader oder Partikelsysteme.Sprache der Wahl ist hier Delphi.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.joachimrohde.com/cms/xoops/modules/articles/index.php?cat_id=1 joachimrohde.com]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet ihr deutsche Übersetzungen der bekannten NeHe Tutorials. Sprache der Wahl ist hier C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.cg.tuwien.ac.at/studentwork/VRSem96/OpenGL/ Technische Universität Wien]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Diese Seite bietet einen allgemeinen Überblick über die primären Funktionen von OpenGL und richtet sich vor allem an Einsteiger.&lt;br /&gt;
|-&lt;br /&gt;
|[http://nehe.gamedev.net/ Nehe] &lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die berühmt berüchtigten NeHe Tutorials sind eine umfangreiche Sammlung an Tutorials zum Thema OpenGL. Von Anfängertutorials bis hin zu komplexen Effekten wird alles behandelt. Sprache der Wahl ist hier C++. (Eine Übersetzung der NeHe Tutorials findet ihr bei Joachim Rhode (siehe oben). )&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.sulaco.co.za/tut.htm sulaco.co.za] &lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| OpenGL Beispiele in Delphi&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenGL Funktionen ==&lt;br /&gt;
&lt;br /&gt;
=== GL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GL|DGL Wiki - Kategorie GL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten OpenGL Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL.tar.gz OpenGL.org - Orginal Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die Orginalspezifikationen der OpenGL 1.0 und OpenGL 1.1 Befehle. (Diese HTML-Dokumente sind nicht Copy&amp;amp;Paste freundlich, da sie vermutlich automatisch aus vorhandenen Dateien (Postscript) erzeugt wurden.)&lt;br /&gt;
|-&lt;br /&gt;
|[http://developer.3dlabs.com/documents/glmanpage_index.htm 3dLabs]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die Orginalspezifikationen der OpenGL 1.0 und OpenGL 1.1 Befehle.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20040616082839/http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von Englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glfunc01_4f03.asp MSDN von Microsoft]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|OpenGL Dokumentation in der MSDN. Die Erklärung der MSDN sind meist keine reinen Kopien der Orginalspezifikationen, sondern enthalten hin und wieder auch zusätzliche Informationen, oder formulieren Texte auf verständlichere Art und Weise.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLU ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GLU|DGL Wiki - Kategorie GLU]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten GLU Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glu/ OpenGL.org - Orginal Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Orginalspezifikationen für die GLU Befehle. (Diese HTML-Dokumente sind nicht Copy&amp;amp;Paste freundlich, da sie vermutlich automatisch aus vorhandenen Dateien (Postscript) erzeugt wurden.)&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20040616082839/http://www.mevis.de/~uwe/opengl/opengl.html mevis.de mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glufnc01_0e43.asp MSDN von Microsoft]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|GLU Dokumentation in der MSDN. Die Erklärung der MSDN sind meist keine reinen Kopien der Orginalspezifikationen, sondern enthalten hin und wieder auch zusätzliche Informationen, oder formulieren Texte auf verständlichere Art und Weise.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLX ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GLX|DGL Wiki - Kategorie GLX]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten GLX Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glx/ OpenGL.org - Orginal  Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Orgninalspezifikationen der GLX Befehle bei OpenGL.org.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20040616082839/http://www.mevis.de/~uwe/opengl/opengl.html mevis.de mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von Englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== WGL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:WGL|DGL Wiki - Kategorie WGL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Wiki-Kategorie die alle übersetzten WGL Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20071218151417/http://developer.3dlabs.com/documents/wglmanpage_index.htm 3dLabs]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung einiger WGL Befehlsspezifikationen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLUT ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://freeglut.sourceforge.net/docs/api.php The freeglut Projekt]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Englischsprachige Dokumentation zum OpenGL Utility Toolkit kurz GLUT.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SDL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:SDL|DGL Wiki - Kategorie SDL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Übersicht aller auf die SDL bezogenen Artikel hier im Wiki. Darunter befinden sich eine Vielzahl von Übersetzungen der SDL Befehlspezifikationen. Diese können auch in der [[SDL-Funktionsübersicht]] gefunden werden.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.libsdl.org/cgi/docwiki.cgi/SDL_20API libsdl.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Das Dokumentationswiki von libSDL.org enthält die komplette Dokumenation zur SDL in englischer Sprache.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.freepascal-meets-sdl.net/ freepascal meets sdl]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Eine Webseite die speziell Informationen über die Programmierung von SDL unter Freepascal zur Verfügung stellt.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== FAQs ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[FAQ| DGL Wiki - FAQ]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein FAQ (Frequently Asked Questions = Häufig gestellte Fragen) zu DelphiGL.com und dem DGL Wiki.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dsource.de/faq/index.htm 3dsource.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein FAQ zu Fragen rund um OpenGL.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Effekte und Techniken mit OpenGL ==&lt;br /&gt;
&lt;br /&gt;
===Glow===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamasutra.com/view/feature/2107/realtime_glow.php Gamasutra]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt, wie man mit Hilfe von Shader(hier DirectX Shader) den Gloweffekt in Realtime umsetzt. Dabei wird erst die Technik dahinter erklährt, und dann wie man sie Schritt für Schritt umsetzt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20071118043007/http://collective.valve-erc.com/index.php?go=tron1 valve-erc.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Schritt für Schritt Anleitung, wie man mit Hilfe von Cg in OpenGL den Glow Effekt realisieren kann &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===HDR===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20090601052809/http://www.gamedev.net/columns/hardcore/hdrrendering/ gamedev.net]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Hier wird sehr kurz eingeleitet, was HDR Rendering überhaupt ist, dann wird der Aufbau des *.hdr Formats erläutert, und dann geht es schon von 0 auf 100 zum Programmieren. Erklährungen gibt es kaum, dafür werden fertige Shader(für DirectX) geboten. &lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20090601202039/http://www.gamedev.net/reference/articles/article2208.asp gamedev.net]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt auch nur etwas kurz das HDR Verfahren, jedoch mit mehr mathematischen Hintergrund in Sachen Tonemapping. Beispielcode für Tonemapping in C++ liegt bei. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===BSP Bäume===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20081201115631/http://www.3dtechdev.com/tutorials/leafbsp/3dbsptrees.html 3dtechdev.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Das beste Dokument überhaupt, für allem die selber BSP Bäume compilieren möchte. Ist belegt mit sehr viel Grafik. Erst beginnt er das Prinzip allgemein zum umschreiben, dann wird alles genau erläutert, und mit verständlichen Pseudocode untermalt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20081019041535/http://www.3dtechdev.com/tutorials/illegalgeometry/illegalgeometrytut.html 3dtechdev.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Nicht ganz so gut geworden, wie sein erstes Tutorial, aber erklährt auch sehr gut, wie man illegale Geometrie aufspürt und beseitigt. Wieder mit Grafiken und Pseudocodes verständlich belegt. Hiermit kann man seinem Map-Compiler den letzten Schliff verleien. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/reference/articles/article981.asp Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Von Michael Abrash, dürfte der ''Erfinder'' von Quake sein. Naja, meine Englischkenntnisse reichen hier nicht ganz aus, um den Text zu verstehen. Ist etwas umständlich geschrieben. Dafür mit Grafiken unterlegt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.zfx-online.de/Tutorials.php?ID=11 Part 1 - Allgemein]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Einzigste deutsche Referenz zu BSP Bäumen, dafür Daumen hoch. Ist aber nicht das Wahre: schlechter C Code, und ich hatte auch nicht den Einduck, das er die Theorie zu diesem Thema bis in die Tiefe verstanden hat(oder er wollte es nicht zu akademisch Erklähren oO). Aber ein guter Einstieg in dieses Thema. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.zfx-online.de/Tutorials.php?ID=13 Part 2 - Kollision und PVS]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20060516103821/http://www.cs.uwec.edu/~stevende/cs455/programs/GameTutorials%20-%20Quake%203%20BSP%20Format.htm Quake3 *.bsp Format]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die beste Dokumentation für das BSP Format, die ich gefunden habe, besser als den Quake3 Sourcecode zu durchforsten. Leider etwas magere Eklährung zu wichtigen Themen wie Patches(Curved Surfaces). Ich pers. hatte jetzt 1 1/2 Wochen gebraucht, um das *.bsp Format vollständig zu verstehen. Ist aber anscheinend die beste Format Dokumentation im Netz. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_q2bsp.shtml Quake2 *.bsp Format]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Kann auch nur soviel sagen, wie beim Link zuvor. Es fehlen hier auch zum Teil Informationen. Man muss halt viel ausprobieren, und sich den Quake 2 Source zu Herzen nehmen, damit man es versteht. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Himmel &amp;amp; Wolken===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/community/forums/topic.asp?topic_id=86024 Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Guter Thread mit vielen Anregungen und Links. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/community/forums/topic.asp?topic_id=135654 Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Hier wird die Diskussion zum obigen Link weitergeführt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://freespace.virgin.net/hugo.elias/models/m_clouds.htm Plasma]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine nette Idee um Plasma in Echtzeit zu generieren, und zu verändern. Leider nichts zum Shading. &lt;br /&gt;
|-&lt;br /&gt;
|[http://nis-lab.is.s.u-tokyo.ac.jp/~nis/cdrom/sig00_cloud.pdf 3D Wolken]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Paper über generieren und rendern von 3 dimensionalen Wolken inklusive Schatten und Lichtstrahlen. Ich hab nur den Lichtstahlen-Algorithmus ausprobiert. Saulangsam aber sehr einfach zu implementieren. Einen Blick ist es auf jeden Fall wert. &lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20031011052035/http://www.geocities.com/ngdash/whitepapers/skydomecolor.html Skydome]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Wenn man mal schnell gute Farben für seinen Skydome braucht... &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Terrain===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_geomipmaps.shtml FlipCode]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Artikel zu Geomipmaping. Zummindest hab ich es hier zum ersten mal gesehen. Und es funzt ganz gut. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.vterrain.org Virtual Terrain Project]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Seite mit Links und Artikeln zu allem, was etwas mit Terrainrendering zu tun hat.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sonstiges===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[Materialsammlung]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Sammlung von gängigen Parametern für [[glMaterial]] hier im Wiki.&lt;br /&gt;
|-&lt;br /&gt;
|[http://freespace.virgin.net/hugo.elias/radiosity/radiosity.htm Radiosity]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Erklährt sehr schön die Funktionsweise von Radiosity, liefert Beispielcodes und ist recht gut illustriert.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20050825110920/http://legion.gibbering.net/projectx/paper/shadow%20mapping/ Shadowmapping]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt das Trapezoidal Shadow Mapping - Verfahren für gerichte Lichter.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_generatingnames.shtml Namensgenerator]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Per Zufallsgenrator Namen erzeugen, und nie wieder kreativ werden müssen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.paulsprojects.net/tutorials/simplebump/simplebump.html Bumpmapping]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Bumpmapping auf Lowend-Grakas. Damals war Bumpmapping noch was ganz tolles... &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.paulsprojects.net/opengl/dpreflect/dpreflect.html Dot Product Reflect]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|zwar nur ne Demo, aber wenn man schon immer mal mit EMBM das Wasser aus Morrowind nachproggen wollte... &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Beispiele/Demos mit Quelltext ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.delphigl.de DelphiGL.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier finden sich besonders eindrucksvolle Newton Physik Demos. Meißtens sogar mit Quelltext.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.shadow3d.de.vu/ Shadow 3D]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier finden sich zwei Demos wie man Quake 3 Modelle lädt und eine glSlang Demo&lt;br /&gt;
|-&lt;br /&gt;
|[[Shadersammlung]] im DGL Wiki&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier findet man freie Shadersourcen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.humus.name Humus]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Diverse eindrucksvolle Demos zu verschiedenen Techniken, häufig mit Quelltext in C (teilweise OpenGL / DirectX)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== weitere Links ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www-user.tu-chemnitz.de/~pester/Lehre/CompGeo.pdf CompGeo.pdf]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Script &amp;quot;Einführung in die Computergeometrie&amp;quot; von Dr. Pester (TU-Chemnitz). Ideales Nachschlagewerk für die Mathematik die einem bei der Grafikprogrammierung so begegnet.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.robsite.de/ robsite.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Auf dieser riesigen Seite finden sich auch viele weitere Links über verschiedene Themen der 3D Programmierung.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dlinks.com/links.cfm?categoryid=3&amp;amp;subcategoryid=21 3dlinks.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Diese Seite hat es sich zur Hauptaufgabe gemacht Links auf Seiten mit dem Thema 3D zu sammeln.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.two-kings.de/links.html two-kings.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Sammlung diverser interessanter Links, vorallem auf Themen im gamedev-Forum verweisend.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.delgine.com Delgine.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Heimat des freien 3D Modellers &amp;quot;DeleD&amp;quot;, welcher in Delphi programmiert ist. Ihr findet dort auch Modellpackete, Texturpackete, Plugins und Hilfe bei der Programmierung von Delphi und OpenGL.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Spieleentwicklung =&lt;br /&gt;
&lt;br /&gt;
==Allgemein==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.spieleprogrammierung.net/ Spieleprogrammierung - OpenGL - GLSL - OpenAL - KI - Animation - Spielephysik]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr Artikel, Tutorials und Programmbeispiele rund um das Thema Spieleprogrammierung. Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://graphics-and-physics-framework.spieleprogrammierung.net/ OpenGL Graphics And Physics Framework]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr ein frei verfügbares OpenGL basiertes Grafik und Physik Framework (LGPL-Lizenz) samt zugehöriger Probammbeispiele. Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://audio-framework.spieleprogrammierung.net/ OpenAL Audio Framework]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr ein frei verfügbares OpenAL Audio Framework (LGPL-Lizenz) samt zugehöriger Probammbeispiele. Unterstützt werden 3D Sounds, EFX (EAX Alternative) Reverb Effekte sowie Audio Streaming (Music and Voices). Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://spieleentwicklung-im-web.spieleprogrammierung.net/ Spieleentwicklung im Web]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr Links (E-Books, Präsentationen, wissenschaftliche Arbeiten und Tutorials) zu verschiedenen Themengebieten der Spieleentwicklung.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Kopierschutz==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://inner-smile.com/nocrack.phtml Inner-Smile.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Seite mit Gedanken zum Thema &amp;quot;Wie schütze ich meine Programme vor Crackern&amp;quot;. Falls die Seite nicht erreichbar ist hat Google noch ne [http://www.google.com/search?q=cache:hpqPT5G4WB0J:www.inner-smile.com/nocrack.phtml+http://inner-smile.com/nocrack.phtml&amp;amp;hl=de&amp;amp;gl=de&amp;amp;ct=clnk&amp;amp;cd=1 Version im Archiv].&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Künstliche Intelligenz ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20080319034335/http://www.kbs.uni-hannover.de/Lehre/KI2/Presentationen/presentation9798/esprit/spieltheorie/spieltheorie.html Uni-Hannover - Spieltheorie]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Artikel über die Grundlagen von KI in Spielen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20080927010337/http://www.robsite.de/tutorials.php?tut=ki Robsite KI-Tutorials]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Sammlung von Texten zum Thema KI in Spielen. Beispiele sind meist in C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://ai-depot.com/ AI-Depot.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Seite die sich ausschließlich mit KI in Spielen beschäftigt.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ai-junkie.com/links.html AI-Junkie.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Linkseite mit vielen KI relevanten Links. Die Seite AI-Junie selbst behandelt auch viele Themen rund um KI.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.aiwisdom.com/ AIWisdom.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Seite die sich mit KIs in Spielen beschäftigt und sich zum Ziel gesetzt hat, alle Artikel zum Thema zu finden und zu Katalogisieren. Es gibt hier auch Artikel über die KIs bestehender Spiele.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.aiguru.com/ AIGuru.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Newsseite zum Thema KI, Künstliches Leben, Hiernforschung, Robotik, Nanotechnologie - Halt alles was Spass macht.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.generation5.org/ Generation5.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Seite über KI, Robotik, etc. . Leider scheint die Seite Probleme zu haben regelmäßig aktualisiert zu werden. Aber zumindest sollte man einige Artikel finden. Die werden ja nicht schlecht.&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20080702005527/http://www.gameai.com/ www.gameai.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|''Wurde Januar 2010 als down gemeldet. Weiss irgendwer etwas genaueres?'' Seite zum Thema KI in Spielen. Soll wohl einen gewissen Stellenwert in der AI-Szene haben.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www-i1.informatik.rwth-aachen.de/~algorithmus/algo19.php Algorithmus der Woche - Informatikjahr 2006]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Vielleicht schon etwas älter aber doch eine gute Anleitung um eine einfache Schach-KI zu erstellen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Ressourcen =&lt;br /&gt;
In dieser Gruppe finden sich Links um die Ressourcen für Eure Projekte zu erstellen.&lt;br /&gt;
&lt;br /&gt;
== Texturen / 2D-Grafiken ==&lt;br /&gt;
&lt;br /&gt;
'''Legende:'''&lt;br /&gt;
:'''Kostenpflichtige Seiten''' sind mit einem * zu '''kennzeichnen'''&lt;br /&gt;
:GPL: Kompatibel mit der GPL&lt;br /&gt;
:MPL: Kompatibel mit der MPL&lt;br /&gt;
:OSS: Verwendung in OpenSource Software nicht verboten&lt;br /&gt;
:CSS: Verwendung in ClosedSource Software nicht verboten&lt;br /&gt;
:Komm: Verwendung in kommerzieller Software nicht verboten&lt;br /&gt;
&lt;br /&gt;
=== Texturen ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;|Genre&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;|Lizenz&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|GPL&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|MPL&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|OSS&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|CSS&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Komm.&lt;br /&gt;
!width=&amp;quot;35%&amp;quot;|Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.davegh.com/vg/home.htm davegh.com]&lt;br /&gt;
|Fantasy&lt;br /&gt;
|[http://www.davegh.com/vg/termsandconditions.htm Eigene]&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|Die Lizenz vererbt sich in die Projekte hinein.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.cgtextures.com/ cgtextures.com]&lt;br /&gt;
|Allgemein&lt;br /&gt;
|[http://www.cgtextures.com/content.php?action=license Eigene]&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|Die Lizenz will im wesentlichen verhindern das Texturen in anderen Textursammlungen auftauchen. So wie ich das verstehe ist es kein Problem die Texturen unter einer anderen Lizenz zu veröffentlichen als die eigentliche Software. Die Software kann also sehr wohl OpenSource sein. Im Zweifelsfalls einfach den Support anschreiben, der ist sehr nett.&lt;br /&gt;
|-&lt;br /&gt;
|url&lt;br /&gt;
|Futuristisch, Mittelalter, etc.&lt;br /&gt;
|CC-BY-SA, etc., gerne auch mit Direktlink auf die Lizenzseite, so vorhanden.&lt;br /&gt;
|✔/✘/?&lt;br /&gt;
|✔/✘/?&lt;br /&gt;
|✔/✘/?&lt;br /&gt;
|✔/✘/?&lt;br /&gt;
|✔/✘/?&lt;br /&gt;
|Alle Bilder sind von Käse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Sonstige 2D-Grafiken ===&lt;br /&gt;
&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;45%&amp;quot;|Beschreibung&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;|Lizenz&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|GPL&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|MPL&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|OSS&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|CSS&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Komm.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.famfamfam.com/lab/icons/silk/ famfamfam silk]&lt;br /&gt;
|Iconset, welches inzwischen relativ weit verbreitet ist. 700 sauber gezeichnete, erkennbare PNG-Icons in TrueColor. Man kann praktisch jede (Arbeits-)Anwendung mit diesem Set vollständig mit Icons versorgen.&lt;br /&gt;
|[http://creativecommons.org/licenses/by/2.5/ CC-BY 2.5], [http://creativecommons.org/licenses/by/3.0/ CC-BY 3.0]&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Texturerstellung ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://3d.diehlsworld.de/textures/index.htm 3d.diehlsworld.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet ihr kurze aber inhaltlich reiche Tutorials zu der Frage &amp;quot;Wie erstelle ich XXXXX-Texturen&amp;quot;. Dabei reicht die Palette von Untergrundtexturen wie Gras, Sand , Fels und Wasser (und Kombinationen dieser) bis hin zu Blitzen und Partikeln. Als Programm wird hier Photoshop verwendet.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gimps.de/gimp/textur-muster/ gimps.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Schritt für Schritt Anleitungen wie man mit Gimp verschiedene Texturen erstellt.&lt;br /&gt;
|-&lt;br /&gt;
|[http://cbt.k090999.de/gimp.php#texturen k090999.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Gimptutorials zum Erstellen verschiedene Texturen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Modelle / 3D-Grafiken ==&lt;br /&gt;
&lt;br /&gt;
=== Blender ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://blendpolis.de/f/viewtopic.php?t=5786 Blendpolis]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Ein Thread im Forum von [http://blendpolis.de Blendpolis] in dem '''sehr''' viele Tutorials aufgelistet sind&lt;br /&gt;
|-&lt;br /&gt;
|[http://blendpolis.de/f/article_cat.php?fldAuto=7 Blendpolis]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Eigentliche Tutorial Seite von [http://blendpolis.de Blendpolis] die Auswahl ist hier aber nicht so groß&lt;br /&gt;
|-&lt;br /&gt;
|[http://wikivid.com/index.php/Blender Blender at wikivid.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Linksammlung von Blender Video Tutorials &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.blender.org/education-help/tutorials/getting-started/ blender3d.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Auch die Heimatseite von Blender bietet viele Tutorials unter anderm auch Video Tuorials&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.Blenderunderground.com Blenderunderground]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| '''sehr gute''' Video-Tutorials&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sounds ==&lt;br /&gt;
&lt;br /&gt;
===Musik===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.jamendo.com/ Jamendo.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Viele Künstler stellen hier ihre Alben unter einer Creative Commons Lizenz online. Man kann dort die Künstler auch kontaktieren und fragen ob man ihre Musik nutzen kann. Taugt außerdem als Radio! ;)&lt;br /&gt;
|-&lt;br /&gt;
|[http://incompetech.com/m/c/royalty-free/ Incompetech.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Viele sehr schön gemacht instrumentale Musik aus allen möglichen Genres. Sie ist frei verwenderbar, wenn man den Macher der Musik (Kevin MacLeod) in seinem Programm erwähnt. Aber das hat er auch verdient. Folgende Programme nutzen beispielsweise (auch) Musik von incompetech.com:&lt;br /&gt;
* OpenParty&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Soundeffekte===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.freesound.org/ freesound.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Diverse Sounds unter [http://www.creativecommons.org/ CreativeCommons] Lizenzen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Soundprogramme===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://audacity.sourceforge.net/?lang=de Sourceforgeseite von Audacity]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein einfaches, freies Programm um Sounddateien zu bearbeiten. Man kann es auch nutzen um Soundeffekte neu zu erstellen, indem man z.B. ein Geräusch mit dem Mikrofon aufnimmt und einige Effekt anwendet, um es passender und nicht mehr aufgenommen klingen zu lassen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://lmms.sourceforge.net/ LMMS]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|LMMS (Linux MultiMedia Studio) ist ein OpenSource+Freeware Composer-Programm ähnlich zum bekannteren aber auch teuren CuBase(r). Trotz des Namens auch für Windows erhältlich.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Benutzer:Lord_Horazont/Tutorial_Versionskontrolle_mit_GIT&amp;diff=25405</id>
		<title>Benutzer:Lord Horazont/Tutorial Versionskontrolle mit GIT</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Benutzer:Lord_Horazont/Tutorial_Versionskontrolle_mit_GIT&amp;diff=25405"/>
				<updated>2011-09-23T15:51:33Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: Working draft&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Versionskontrolle mit git =&lt;br /&gt;
&lt;br /&gt;
Hallo und herzlich willkommen zu meinem dritten Tutorial. Heute soll's um Versionskontrolle gehen und zwar demonstriert anhand von git. Warum überhaupt Versionskontrolle? Warum für Hobbyprojekte? Was ist git? Wie macht man das? – diese und andere Fragen werde ich (hoffentlich) beantworten.&lt;br /&gt;
&lt;br /&gt;
== Theorie der Versionskontrolle ==&lt;br /&gt;
&lt;br /&gt;
Nun, jeder der schon einmal einen Wikiartikel geschrieben hat, hatte schon indirekt Kontakt mit Versionskontrolle. Sowas ist nämlich in jedes MediaWiki eingebaut. Immer, wenn man einen Artikel bearbeitet, wird die vorherige Version erhalten, man kann sie später anschauen oder Änderungen rückgängig machen.&lt;br /&gt;
&lt;br /&gt;
Dies gibts nicht nur für Webseiten wie unser Wiki, sondern, in anderer Form, auch für Projekte. Viele werden schonmal irgendwo SVN oder CVS gehört haben, weniger von GIT oder Mercurial. Diese vier sind vermutlich die populärsten Versionskontrolle-Werkzeuge, die im Moment im Einsatz sind.&lt;br /&gt;
&lt;br /&gt;
== Häufige Probleme… ==&lt;br /&gt;
&lt;br /&gt;
=== Problem 1: Mist gebaut? ===&lt;br /&gt;
Der große Vorteil der Versionskontrolle liegt auf der Hand. Habt ihr schonmal selbstsicher angefangen, an einem Feature zu arbeiten, dann festgestellt, dass es irgendwie nicht ganz so gut läuft wie erwartet und zum schluss einen Haufen Konflikte im Code gehabt? Da hilft meist nur noch eins: Rückgängig drücken, und zwar oft. Mist! Das Undo-Limit der IDE ist erreicht, aber nichtmal die Hälfte der Änderungen wurden rückgängig gemacht. Dann hat man noch die Möglichkeit, auf ein Backup zurückzugreifen (falls das überhaupt existiert), oder eben alles von Hand wieder Rückgängig machen.&lt;br /&gt;
&lt;br /&gt;
=== Problem 2: Zusammenarbeit ===&lt;br /&gt;
Anderes Szenario: Man hat ein Projekt, was gut läuft und was andere (Programmierer) interessant finden. Sie möchten Beitragen, aber natürlich hat man eher wenig Lust immer Archive mit allen Sourcedateien per Mail oder sonstwas zu verschicken. Auch will man den Leuten nicht unbedingt Schreibzugriff auf den eigenen Rechner geben. Also könnte man immer noch, um das Datenvolumen zu reduzieren, Patches verschicken.&lt;br /&gt;
&lt;br /&gt;
== … und ihre Beseitigung durch Versionskontrolle ==&lt;br /&gt;
Aus beiden Szenarien gibt es einen gemeinsamen Ausweg: Versionskontrolle und Repositories solcher müssen her!&lt;br /&gt;
&lt;br /&gt;
Anhand von git sei nun im folgenden gezeigt, wie man die beiden genannten Probleme umgeht. Aber wir wollen von Grund auf anfangen, damit ihr das ganze gleich sofort ausprobieren könnt. Dazu beginnen wir damit, wie man Git verwendet. Es sei vorrausgesetzt, dass ihr mit dem Terminal (oder der git-bash, was nichts weiter als eine Bash mit Git für Windows ist) umgehen könnt. Außerdem sollte Git bzw. die Git-Bash natürlich installiert sein ;).&lt;br /&gt;
&lt;br /&gt;
== Ein Git-Repository anlegen und befüllen ==&lt;br /&gt;
Das ist recht einfach. Wir wechseln (mit {{INLINE CODE|cd}}) in das Verzeichnis, wo wir ein Git-Repository anlegen wollen. Das ist im optimalfall leer oder das Wurzelverzeichnis unseres Projektes. Dann initialisieren wir ein git Repo mit:&lt;br /&gt;
&lt;br /&gt;
 $ git init&lt;br /&gt;
&lt;br /&gt;
War einfach, oder? Jetzt können wir schauen, was git so sagt (vorrausgesetzt, es sind schon Dateien im Verzeichnis, sonst erstmal ein Projekt oder so reinkopieren):&lt;br /&gt;
&lt;br /&gt;
 $ git status&lt;br /&gt;
&lt;br /&gt;
Das sollte eine Ausgabe ähnlich dieser erzeugen:&lt;br /&gt;
 # On branch master&lt;br /&gt;
 #&lt;br /&gt;
 # Initial commit&lt;br /&gt;
 #&lt;br /&gt;
 # Untracked files:&lt;br /&gt;
 #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)&lt;br /&gt;
 #&lt;br /&gt;
 #	&amp;lt;font color=&amp;quot;#7f0000&amp;quot;&amp;gt;a&amp;lt;/font&amp;gt;&lt;br /&gt;
 #	&amp;lt;font color=&amp;quot;#7f0000&amp;quot;&amp;gt;b&amp;lt;/font&amp;gt;&lt;br /&gt;
 nothing added to commit but untracked files present (use &amp;quot;git add&amp;quot; to track)&lt;br /&gt;
Wobei anstatt a und b bei euch vermutlich andere Dateien und Verzeichnisse aufgelistet sind. Diese können wir nun mit:&lt;br /&gt;
 $ git add file1 file2 …&lt;br /&gt;
hinzufügen. Das geht aber auch einfacher:&lt;br /&gt;
 $ git add directory/* # fügt alle Dateien im Verzeichnis directory hinzu (mit Unterverzeichnissen)&lt;br /&gt;
 $ git add directory # wie oben&lt;br /&gt;
 $ git add *.c # fügt alle Dateien, die auf .c enden und im Wurzelverzeichnis liegen hinzu&lt;br /&gt;
 $ git add directory/*.c # könnt ihr sicher erraten: fügt alle Dateien, die auf *.c enden und in directory liegen hinzu (sollte dort ein Ordner auf .c &lt;br /&gt;
enden, wird dieser auch hinzugefügt…)&lt;br /&gt;
 $ git add -A # fügt *alle* dateien, die es im Ordner finden kann, hinzu. Kann zu viel sein, evtl. mit git rm --cached wieder welche entfernen.&lt;br /&gt;
Soweit. Nun haben wir git mitgeteilt, dass wir diese Dateien hinzufügen wollen. Das müssen wir noch ''committen'', sozusagen „amtlich“ machen:&lt;br /&gt;
 $ git commit -v&lt;br /&gt;
Das wird euren bevorzugten Terminal-Editor öffnen und ihr könnt eine Commit-Message eingeben, die später im Log zu diesem „Commit“ auftauchen wird. Ein „Commit“ ist sozusagen ein Satz an Änderungen, der logisch zusammen gehört. Was logisch zusammen gehört, definiert sich daran, was ihr zusammen committed ;). Wenn nichts schief gegangen ist, wird git sowas sagen wie: &lt;br /&gt;
 [master (root-commit) 050a498] * Bla&lt;br /&gt;
  0 files changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 bla/bakery/bread&lt;br /&gt;
  create mode 100644 bla/cookie&lt;br /&gt;
  create mode 100644 bla/keks&lt;br /&gt;
  create mode 100644 c.c&lt;br /&gt;
Ansonsten sollte die Fehlermeldung aufschluss darüber geben, was nicht geklappt hat. Eventuell möchte git, dass ihr ihm sagt, wer ihr seid. Das tut ihr mit den Befehlen, die es euch da vorschlägt. Diese Informationen werden in die Commits mit eingebunden, damit man diese den Entwicklern zuordnen kann.&lt;br /&gt;
&lt;br /&gt;
== Änderungen durchführen und committen ==&lt;br /&gt;
Nun können wir an unserem Code rumschreiben. Wenn wir einen Schritt weiter zu unserem Ziel gekommen sind, können wir die Änderungen ins Repo committen. Ich mache das meist, wenn ich kompilierfähigen Code habe oder wenn ich einen größeren Schritt erledigt habe oder wenn ich von einer logischen Einheit des Codes in eine andere wechsle (z.B. unterschiedliche Packages oder Module). Jetzt können wir entweder alle Dateien, die wir geändert oder neu hinzugefügt haben mit&lt;br /&gt;
 $ git add path/to/file.pp path/to/file2.pp&lt;br /&gt;
“stagen”, d.h. für den Commit vorsehen, oder wir nutzen&lt;br /&gt;
 $ git commit -av&lt;br /&gt;
wobei das “a” in der Kommandozeile sagt, dass es automatisch alle geänderten Dateien mit in den Commit aufnehmen soll. Beachtet aber, dass es neu erstellte Dateien nicht als “changed” sondern als “untracked” sieht, also werden sie nicht beachtet. Neu erstellte Dateien muss man explizit mit &lt;br /&gt;
 $ git add path/to/new/file.pp&lt;br /&gt;
ankündigen. Das kann man aber ohne Probleme zusammen mit {{INLINE CODE|git commit -av}} benutzen, sodass man nur die neu erstellten Dateien mit {{INLINE CODE|git add}} stage't, aber die anderen mit {{INLINE CODE|git commit -av}}.&lt;br /&gt;
&lt;br /&gt;
 $ git log&lt;br /&gt;
sollte nun schon ein paar schöne Commits ausgeben.&lt;br /&gt;
&lt;br /&gt;
== Pushs, Fetchs, Merges, Pulls und Branches ==&lt;br /&gt;
Ähhh. Was? Ok, der Reihe nach. &lt;br /&gt;
&lt;br /&gt;
== “A successful git branching model” ==&lt;br /&gt;
Auf [http://nvie.com/posts/a-successful-git-branching-model/ dieser Seite] bin ich auf ein sehr hilfreiches Arbeitsmodell für das Arbeiten mit Branches unter Git gestoßen. Das könnt ihr euch am besten Ausdrucken und an die Wand pinnen.&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Diskussion:DGL_Treffen/2011/Organisation&amp;diff=25384</id>
		<title>Diskussion:DGL Treffen/2011/Organisation</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Diskussion:DGL_Treffen/2011/Organisation&amp;diff=25384"/>
				<updated>2011-09-02T17:36:01Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: 7=max&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 7=max ==&lt;br /&gt;
&lt;br /&gt;
Ohne hier spammen zu wollen, 7=max, drei von vier haben aber 8 tage angegeben ;)&lt;br /&gt;
&lt;br /&gt;
grüße --[[Benutzer:Lord horazont|Lord horazont]] 19:36, 2. Sep. 2011 (CEST)&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Tutorial_glsl&amp;diff=25382</id>
		<title>Tutorial glsl</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Tutorial_glsl&amp;diff=25382"/>
				<updated>2011-08-25T15:20:53Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: /* Strukturen */ Index beim beispielhaften LightSource-Zugriff korrigiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Einleitung=&lt;br /&gt;
Hallo und willkommen bei meiner &amp;quot;Einführung&amp;quot; in GLSL (kurz für &amp;quot;Open'''GL''' '''S'''hading '''L'''anguage&amp;quot;), der offiziellen Hochlevel-Shadersprache von OpenGL. In diesem umfangreichen Dokument werde ich versuchen, sowohl auf die Nutzung (sprich das Laden und Anhängen von Shadern im Quellcode), als auch auf die Programmierung von Shadern selbst einzugehen, inklusive aller Sprachelemente der OpenGL Shadersprache. Es wird also auch recht viele Informationen zu der C-ähnlichen Programmstruktur und den von GLSL angebotenen Variablen und Attributen gehen. Am Ende dieser Einführung sollten alle die, die sich für das Thema interessieren, in der Lage sein, zumindest einfach Shader zu schreiben und auch in ihren Programmen zu nutzen. Ausserdem soll dieses Dokument gleichzeitig als ein deutsches &amp;quot;Pendant&amp;quot; zu den von Khronoes veröffentlichten Shaderspezifikationen, und damit als alltägliches Nachschlagewerk, dienen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Vorkenntnisse==&lt;br /&gt;
Wie auch schon mein ARB_VP-Tutorial richtet sich auch diese Einführung aufgrund ihrer Thematik eher an die fortgeschritteneren GL-Programmierer und neben sehr guten GL-Kenntnissen sollten sich alle, die sich daran versuchen wollen, mit den technischen Hintergründen der GL, wie z.B. dem Aufbau der Renderpipeline auskennen. Weiterhin sind C-Kenntnisse absolut erforderlich, da die Shader ja in einer an ANSI-C angelehnten Syntax geschrieben werden. Auch Begriffsdefinitionen zu Vertex oder Fragment werden zum Verständis dieser Einführung benötigt. Wer also noch am Anfang seiner GL-Karriere steht, dem wird dieses Dokument nicht viel nützen. Ganz nebenbei solltet ihr auch noch eine gehörige Portion Zeit (am besten nen kompletten Nachmittag) mitbringen, denn die folgende Kost ist nicht nur umfangreich, sondern auch manchmal recht schwer verdaulich.&lt;br /&gt;
&lt;br /&gt;
=Was ist GLSL?=&lt;br /&gt;
Wie Eingangs kurz angesprochen handelt es sich bei GLSL um eine Shadersprache, also um eine Hochsprache, in der man die programmierbaren Teile aktueller Grafikbeschleuniger nach eigenem Belieben programmieren kann. Sie stellt quasi den Nachfolger zu den in Assembler geschriebenen Vertex- und Fragmentprogrammen ([[GL_ARB_vertex_program]]/[[GL_ARB_fragment_program]]) dar und basiert auf ANSI C, erweitert um Vektor- und Matrixtypen sowie einige C++-Mechanismen.&lt;br /&gt;
&lt;br /&gt;
Die in GLSL geschriebenen Programme nennen sich, angepasst an die Terminologie von RenderMan und DirectX, [[Shader]] (im Gegensatz zu &amp;quot;Programme&amp;quot; bei ARB_VP/FP) und werden entweder auf Eckpunkte (VertexShader), Fragmente (FragmentShader) angewendet, oder (neuerdings, ab Shadermodell 4.0) auch genutzt um Geometrie zu erstellen (Geometryshader). Andere Teile der Renderpipeline (z.B. die Rasterisierung) können momentan noch nicht durch Shader beeinflusst werden, was allerdings in Zukunft noch kommen kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Voraussetzungen==&lt;br /&gt;
&lt;br /&gt;
GLSL wurde 2005 mit OpenGL 1.5 eingeführt. Während es in Sachen Treiber- und Hardwareunterstützung anfänglich noch dürftig aussah, wird man inzwischen keine Grafikkarte mehr kaufen können die nicht zumindest Vertex- und Fragmentshader beherscht. Geometrieshader hingegen sind relativ neu und wurden erst mit Shadermodell 4.0 eingeführt, hier ist es also unter Umständen noch möglich dass selbst aktuelle Treiber/Karten keine Geometrieshader beherrschen.&lt;br /&gt;
&lt;br /&gt;
Natürlich benötigt man auch einen passenden OpenGL-Header der die für GLSL nötigen Funktionen exportiert. Ich verweise dazu auf unseren eigenen OpenGL-Header [[DGLOpenGL.pas]], der peermanent auf dem aktuellsten Stand gehalten wird und auch Support für Geometrieshader mitbringt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Extensions==&lt;br /&gt;
&lt;br /&gt;
Die GL-Shadersprache &amp;quot;besteht&amp;quot; in ihrer aktuellen Version aus folgenden Extensions, fürs Verständnis wäre es nicht schlecht, wenn ihr euch zumindest die Einleitungen dazu durchlest :&lt;br /&gt;
* [[GL_ARB_shader_objects]] ([http://oss.sgi.com/projects/ogl-sample/registry/ARB/shader_objects.txt Originalspezifikation])&lt;br /&gt;
: Definiert die API-Aufrufe, die zum Erstellen, Kompilieren, Linken, Anhängen und Aktivieren von Shader- und Programmobjekten nötig sind. &lt;br /&gt;
* [[GL_ARB_vertex_shader]] ([http://oss.sgi.com/projects/ogl-sample/registry/ARB/vertex_shader.txt Originalspezifikation])&lt;br /&gt;
: Fügt der OpenGL Programmierbarkeit auf Vertexebene hinzu. &lt;br /&gt;
* [[GL_ARB_fragment_shader]] ([http://oss.sgi.com/projects/ogl-sample/registry/ARB/fragment_shader.txt Originalspezifikation])&lt;br /&gt;
: Fügt der OpenGL Programmierbarkeit auf Fragmentebene hinzu. &lt;br /&gt;
* [[GL_ARB_shading_language_100]] ([http://oss.sgi.com/projects/ogl-sample/registry/ARB/shading_language_100.txt Originalspezifikation])&lt;br /&gt;
: Gibt die unterstützte Version von glSlang an, momentan 1.00.&lt;br /&gt;
&lt;br /&gt;
'''Hinweis''' : Seit OpenGL 2.0 ist GLSL Teil des Kerns. Wenn die Karte also OpenGL 2.0 unterstützt, dann unterstützt sie auch (zumindest in Software) Vertex- und Fragmentshader.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sprachversionen==&lt;br /&gt;
&lt;br /&gt;
Neben der OpenGL-Version und dem vorhandenen Shadermodell (das eher an DirectX ausgerichtet ist), bietet auch GLSL verschiedene Versionen, die entsprechend erweiterte Funktionalität bieten.&lt;br /&gt;
&lt;br /&gt;
Auslesen kann man die verfürgbare GLSL-Version wie folgt:&lt;br /&gt;
&lt;br /&gt;
 glGetString(GL_SHADING_LANGUAGE_VERSION)&lt;br /&gt;
&lt;br /&gt;
Erst ab Version 1.4. kann man davon ausgehen dass GLSL alle Features des Shadermodells 4.0 liefert, ab 1.3 grob gesagt Shadermodell 3.0 (bei GLSL lässt sich das leider nicht so leicht unterteilen).&lt;br /&gt;
&lt;br /&gt;
Ausserdem kann man seinem Shader eine Versionsnummer verpassen. Sollte der Shadercompiler (also Treiber bzw. Hardware) diese Version nicht unterstützen, gibt dieser eine Fehlermeldung heraus:&lt;br /&gt;
&lt;br /&gt;
 #version 1.50 &lt;br /&gt;
&lt;br /&gt;
''(Hinweis: Muss am Anfang des Shaders stehen)''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objekte==&lt;br /&gt;
&lt;br /&gt;
Im Zuge der Vereinheitlichung der GL wird immer häufiger in Objekte gekapselt, deren API dann auch aneinander angelehnt ist. Ziel ist, dabei die Programmierung der GL uniform zu machen, so dass z.B. zwischen dem Erstellen und Verwalten eines Vertex-Buffer-Objektes oder eines Shader-Objektes kaum ein Unterschied besteht (demnächst kommen dann auch Pixel-Buffer-Objekte dazu). Mit glSlang wurden dann im Zuge dieser Aktion zwei neue Objekte eingeführt, deren Definition ihr euch unbedingt einprägen solltet:&lt;br /&gt;
&lt;br /&gt;
* '''Programmobjekt'''&lt;br /&gt;
:Ein Objekt, an das die Shader später angebunden werden. Bietet Funktionalität zum Linken der Shader und prüft dabei die Kompatibilität zwischen Vertex- und Fragmentshader.&lt;br /&gt;
&lt;br /&gt;
* '''Shaderobjekt'''&lt;br /&gt;
:Dieses Objekt verwaltet den Quellcodestring eines Shaders und ist entweder vom Typ '''GL_VERTEX_SHADER''', '''GL_FRAGMENT_SHADER_ARB''' oder '''GL_GEOMETRY_SHADER'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ressourcen==&lt;br /&gt;
&lt;br /&gt;
Die Shadersprache ist keinesfalls final und es wurden bereits diverse Ausdrücke für zukünftige Verwendung reserviert, denn ein Ziel bei ihrer Entwicklung war es, sie so zukunftsorientiert zu gestalten, dass auch Grafikkarten der nächsten und übernächsten Generation voll ausgenutzt werden können. Damit einher geht die Tatsache, dass sich die Spezifikationen in Zukunft ändern/erweitern werden, weshalb man da immer einen Blick hineinwerfen sollte. Die Anlaufstelle dafür ist die [http://www.opengl.org/documentation/specs/ Spezifikationenliste auf OpenGL.org].&lt;br /&gt;
&lt;br /&gt;
=GLSL im Programm=&lt;br /&gt;
Bevor wir uns mit der Syntax von glSlang beschäftigen, zeige ich euch erstmal, wie ihr Shader in euer Programm einbindet und nutzt. Warum das zuerst? Ganz einfach deshalb, weil ihr dann das, was ihr im glSlang-Syntaxteil lernt, direkt in eurer Testanwendung verwenden könnt. Hoffe diese Entscheidung klingt logisch und findet Anklang.&lt;br /&gt;
&lt;br /&gt;
Zuerst benötigen wir natürlich unsere Objekte. Zum einen ein ''Programmobjekt'', an das unsere Shader gebunden werden, und zwei ''Shaderobjekte'', die den Quellcode unseres Vertex bzw. Fragment Shaders aufnehmen. Dazu wurde eigens der neue &amp;quot;Datentyp&amp;quot; {{INLINE_CODE|glHandle}} eingeführt, der ein Objekthandle repräsentiert. Wir deklarieren also wie folgt :&lt;br /&gt;
&lt;br /&gt;
 ProgramObject        : GLhandle;&lt;br /&gt;
 VertexShaderObject   : GLhandle;&lt;br /&gt;
 FragmentShaderObject : GLhandle;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nach dieser Deklaration können wir dann damit beginnen unsere Objekte zu erstellen. Den Anfang macht das Programmobjekt :&lt;br /&gt;
&lt;br /&gt;
 ProgramObject        := glCreateProgram;&lt;br /&gt;
&lt;br /&gt;
Die Funktion [[glCreateProgram]] erstellt uns oben ein leeres Programmobjekt und gibt ein gültiges Handle darauf zurück.&lt;br /&gt;
&lt;br /&gt;
Weiter gehts mit der Erstellung unseres Vertex bzw. Fragment Shaders :&lt;br /&gt;
&lt;br /&gt;
 VertexShaderObject   := glCreateShader(GL_VERTEX_SHADER);&lt;br /&gt;
 FragmentShaderObject := glCreateShader(GL_FRAGMENT_SHADER);&lt;br /&gt;
&lt;br /&gt;
[[glCreateShader]] dient zur Generierung eines leeren Shaderobjektes. Momentan unterstützt diese Funktion VertexShader und FragmentShader.&lt;br /&gt;
&lt;br /&gt;
Nachdem wir nun also zwei gültige Shaderobjekte haben, wollen wir diese auch mit entsprechendem Quellcode versorgen :&lt;br /&gt;
&lt;br /&gt;
 glShaderSource(VertexShaderObject, 1, @ShaderText, @ShaderLength);&lt;br /&gt;
 glShaderSource(FragmentShaderObject, 1, @ShaderText, @ShaderLength);&lt;br /&gt;
&lt;br /&gt;
Via [[glShaderSource]] setzen wir den Quellcode eines Shaderobjektes ''komplett'' neu. Zum Laden des Quellcodes bietet sich unter Delphi übrigens eine TStringList geradezu an. Es sollte beachtet werden, dass der Quellcode zu diesem Zeitpunkt ''nicht geparst'' wird, also keine Fehleruntersuchung stattfindet.&lt;br /&gt;
&lt;br /&gt;
Der Quellcode wurde jetzt also an unsere Shaderobjekte gebunden und sollte dann natürlich auch noch kompiliert werden :&lt;br /&gt;
&lt;br /&gt;
 glCompileShader(VertexShaderObject);&lt;br /&gt;
 glCompileShader(FragmentShaderObject);&lt;br /&gt;
&lt;br /&gt;
Der glSlang-Compiler des Treibers wird bei einem Aufruf von [[glCompileShader]] versuchen, unsere Shader zu kompilieren. Sofern diese keine Fehler aufweisen, sollte dies auch erfolgreich sein. Wenn nicht, dann spuckt uns der Shadercompiler (je nach Treiber) recht detaillierte Infos aus. Wie man an diese Infos kommt könnt ihr gleich nachlesen.&lt;br /&gt;
&lt;br /&gt;
Wenn unsere Shader dann kompiliert werden konnten, ist es Zeit, diese an unser anfangs erstelltes Programmobjekt anzuhängen :&lt;br /&gt;
&lt;br /&gt;
 glAttachShader(ProgramObject, VertexShaderObject);&lt;br /&gt;
 glAttachShader(ProgramObject, FragmentShaderObject);&lt;br /&gt;
&lt;br /&gt;
Nachdem die Shaderobjekte nun an das Programmobjekt angehängt wurden, werden diese nicht mehr benötigt und ihre Resourcen können freigegeben werden :&lt;br /&gt;
&lt;br /&gt;
 glDeleteShader(VertexShaderObject);&lt;br /&gt;
 glDeleteShader(FragmentShaderObject);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am Schluß müssen wir dann noch unsere ans Programmobjekt gebundenen Shader linken :&lt;br /&gt;
&lt;br /&gt;
 glLinkProgram(ProgramObject);&lt;br /&gt;
&lt;br /&gt;
Während [[glCompileShader]] unsere Shader auf syntaktische Fehler innerhalb ihres lokalen Raums geprüft hat, werden beim Linken durch [[glLinkProgram]] die angehangenen Shader zu einem ausführbaren Shader gelinkt. Folgende Bedingungen führen zu einem '''Linkerfehler''':&lt;br /&gt;
&lt;br /&gt;
* Die Zahl der von der Implementation unterstützten Attributvariablen wurde überschritten&lt;br /&gt;
* Der Speicherplatz für Uniformvariablen wurde überschritten&lt;br /&gt;
* Die Zahl der von der Implementation angebotenen Sampler wurde überschritten&lt;br /&gt;
* Die main-Funktion fehlt&lt;br /&gt;
* Die Liste der Varying-Variablen des Vertexshaders stimmt nicht mit der des Fragmentshaders überein&lt;br /&gt;
* Funktions- oder Variablenname nicht gefunden&lt;br /&gt;
* Eine gemeinsame Globale ist mit unterschiedlichen Werten oder Typen initialisiert worden&lt;br /&gt;
* Zwei Sampler unterschiedlichen Typs zeigen auf die selbe Textureneinheit&lt;br /&gt;
* Ein oder mehrere angehangene(r) Shader wurden nicht erfolgreich kompiliert&lt;br /&gt;
&lt;br /&gt;
Die Nutzung von glSlang im eigenen Programm ist wie oben erkennbar also nicht wirklich schwer und innerhalb kurzer Zeit realisiert. Natürlich ist es auch möglich z.B. nur einen VertexShader oder nur einen FragmentShader an ein Programmobjekt zu binden.&lt;br /&gt;
&lt;br /&gt;
Noch eine kleine Notiz zum Löschen der Shader mittel [[glDeleteShader]] : Da Shader(objekte) einen Referenzzähler besitzen und erst gelöscht werden wenn diese nirgendwo mehr benötigt werden, ist es nicht falsch diese vor dem Linkvorgang zu löschen. Allerdings spielt es letztendlich keine Rolle ob die Löschanweisung vorher der nachher ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Fehlererkennung==&lt;br /&gt;
Natürlich wird es ohne Fehlerausgabe recht schwer, etwaige Probleme in einem Vertex- oder Fragmentshader zu finden. Doch auch in diesem Bereich wurde glSlang recht gut durchdacht und es wurden zwei Funktionen eingeführt, welche im Zusammenspiel die Fehlersuche recht einfach machen, nämlich [[glGetShaderInfoLog]] und [[glGetShader]] mit dem Argument {{INLINE_CODE|GL_OBJECT_INFO_LOG_LENGTH}}. Erstere Funktion liefert uns einen Logstring, während uns letztere Funktion dessen Länge angibt. Der Logstring wird verändert, sobald ein Shader kompiliert oder ein Programm gelinkt wird.&lt;br /&gt;
&lt;br /&gt;
Um die Ausgabe dieses Logs so einfach wie möglich zu machen, bietet es sich an beide in einer einfach Funktion unterzubringen :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;pascal&amp;quot;&amp;gt;function glSlang_GetInfoLog(pShader: GLHandleARB): String;&lt;br /&gt;
var&lt;br /&gt;
  blen, slen: GLInt;&lt;br /&gt;
  InfoLog: PGLCharARB;&lt;br /&gt;
&lt;br /&gt;
begin&lt;br /&gt;
  glGetShaderiv(glObject, GL_INFO_LOG_LENGTH , @blen);&lt;br /&gt;
  if blen &amp;gt; 1 then&lt;br /&gt;
  begin&lt;br /&gt;
    GetMem(InfoLog, blen * SizeOf(GLCharARB));&lt;br /&gt;
    glGetShaderInfoLog(pShader, blen, slen, InfoLog);&lt;br /&gt;
    Result := PChar(InfoLog);&lt;br /&gt;
    Dispose(InfoLog);&lt;br /&gt;
  end;&lt;br /&gt;
end;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Funktion ist recht leicht erklärt : Zuerst lassen wir uns über {{INLINE_CODE|glGetShaderiv}} mitteilen wie lang der aktuelle Infolog ist. Sollte dort tatsächlich etwas drinstehen (blen &amp;gt; 1), dann lassen wir uns dessen Inhalt via {{INLINE_CODE|glGetShaderInfoLog}} in {{INLINE_CODE|InfoLog}} ausgeben und liefern diesen als Ergebnis zurück.&lt;br /&gt;
&lt;br /&gt;
Wie bereits gesagt wird nur nach dem Kompilieren eines Shaders bzw. dem Linken eines Programmobjektes ein Infolog erstellt. Es bietet sich dadurch an, direkt danach einen solchen Aufruf zu machen :&lt;br /&gt;
&lt;br /&gt;
 glCompileShader(VertexShaderObject);&lt;br /&gt;
 ShowMessage(glSlang_GetInfoLog(VertexShaderObject));&lt;br /&gt;
&lt;br /&gt;
Wenn unser Vertex Shader komplett fehlerfrei kompiliert werden konnte, dann sehen wir als Ergebnis nur einen leeren Dialog. Ist dies nicht der Fall, so werden wir vom Treiber mit recht detaillierten Fehlerinformationen &amp;quot;belohnt&amp;quot;, z.B. so :&lt;br /&gt;
&lt;br /&gt;
[[Bild:GLSL_error_vshader.jpg]]&lt;br /&gt;
&lt;br /&gt;
Auch das Infolog nach dem Linken des Programmobjektes dürfte, selbst wenn keine Fehler vorkommen, recht interessant sein, das sieht dann nämlich so aus :&lt;br /&gt;
&lt;br /&gt;
[[Bild:GLSL info programobject.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wie zu sehen, wird uns nach dem erfolgreichen Linken auch gesagt, ob und welcher Shader in Hardware bzw. Software läuft. Für Debuggingzwecke sicherlich eine mehr als brauchbare Information.&lt;br /&gt;
&lt;br /&gt;
==Shader benutzen==&lt;br /&gt;
Um den Shader auch für die nächsten Polygone zu benutzen oder Uniformparameter übergeben zu können, ruft man die Funktion&lt;br /&gt;
 glUseProgramt(ProgramObject);&lt;br /&gt;
um alle Shader zu deaktivieren, ruft man dieselbe Funktion mit dem Parameter 0.&lt;br /&gt;
&lt;br /&gt;
==Parameterübergabe==&lt;br /&gt;
Uniformparameter (mehr dazu später) stellen die Schnittstelle zwischen eurem Programm und dem Shader dar, werden also genutzt um Daten aus dem Programm heraus an einen Shader zu übergeben. Zur Übergabe dieser Parameter bietet OpenGL diverse Funktionen, die alle Abkömmlinge von [[glUniform]] sind. Während mit {{INLINE_CODE|glUniform4f}} z.B. ein Vier-Komponentenvektor an das Programmobjekt übergeben wird, kann man mittels {{INLINE_CODE|glUniformMatrix4fv}} ganze Matrizen schnell und einfach übergeben. Ausserdem gibt es nun die Möglichkeit Uniformparameter direkt über ihren Namen, statt wie unter ARB_FP/VP über einen festen Index zu adressieren. Die Funktion [[glGetUniformLocationARB]] gibt anhand des übergebenen Parameternamens dessen Position zurück. Man kann also ganz einfach über den Namen drauf zugreifen :&lt;br /&gt;
&lt;br /&gt;
 glUniform3f(glGetUniformLocation(ProgramObject, PGLCharARB('LightPosition')), LPos[0], LPos[1], LPos[2]);&lt;br /&gt;
 glUniform1i(glGetUniformLocation(ProgramObject, PGLCharARB('texSamplerTMU3')), 3);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wichtig ist hier, das man je nach Parametertyp auch die passende Anzahl von Argumenten übergibt. Also für einen 4-Komponenten Floatvektor {{INLINE_CODE|glUniform4fARB}} und für einen einfachen Integerwert (z.B. Textureinheit für einen Sampler) glUnifrom1iARB. Auch nicht vergessen dürft ihr, das die Namen der Parameter genauso wie im Shader geschrieben werden müssen, also Groß- und Kleinschreibung beachtet werden muß.&lt;br /&gt;
&lt;br /&gt;
=Die Shadersprache=&lt;br /&gt;
&lt;br /&gt;
Nachdem wir uns mit der Einbindung der glSlang-Shader in unser Programm beschäftigt haben, wollen wir uns in den folgenden Kapiteln um die Sprachelemente von glSlang kümmern. Wie schon gesagt basiert glSlang auf ANSI-C, wurde allerdings um speziell auf den Zielbereich angepasste Vektor- und Matrixtypen und einige C++-Features wie das freie deklarieren von Variablen an jeder Stelle und das Funktionsüberladen auf Basis des Argumenttyps erweitert. Wer sich ein wenig mit C/C++ auskennt sollte also in der nun folgenden Materie keine Probleme bekommen.&lt;br /&gt;
&lt;br /&gt;
'''Obligatorische Hinweise für verwöhnte Delphi-Nutzer : '''&lt;br /&gt;
*Wie von C/C++ her gewohnt, spielt auch in glSlang die Groß- und Kleinschreibung eine wichtige Rolle, also bitte achtet darauf. gl_Position ist eine komplett andere Variable als z.B. gl_position.&lt;br /&gt;
*Es findet keine automatische Typenkonvertierung statt. Das bedeutet also das float MyFloat = 1 ungültig ist und es in dem Falle float MyFloat = 1.0 heissen muss. Typecasts müssen also immer manuell stattfinden, z.B. MyFloat = float(MyInt).&lt;br /&gt;
&lt;br /&gt;
'''Kleine Programmstrukturkunde für C-Unkundige :'''&amp;lt;br&amp;gt;&lt;br /&gt;
Da sicherlich einige Delpher nie richtig was mit C gemacht haben, zeige ich mal anhand eines kleinen Beispieles (das auf keinen Fall nen brauchbaren Shader darstellt) den grundlegenden Aufbau eines glSlang-Shaders, der natürlich dem Aufbau eines C-Programmes stark ähnelt :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
uniform vec4 VariableA;&lt;br /&gt;
float VariableB;&lt;br /&gt;
vec3  VariableC;&lt;br /&gt;
const float KonstanteA = 256.0;&lt;br /&gt;
&lt;br /&gt;
float MyFunction(vec4 ArgumentA)&lt;br /&gt;
{&lt;br /&gt;
    float FunktionsVariableA = float(5.0);&lt;br /&gt;
&lt;br /&gt;
    return float(ArgumentA * (FunktionsVariableA + KonstanteA));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Ich bin ein Kommentar&lt;br /&gt;
/* Und ich auch */&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;&lt;br /&gt;
    gl_TexCoord[0] = gl_MultiTexCoord0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sieht doch recht bekannt aus, unser Programmaufbau. Delphi und C haben ja so einige Grundlagen gleich, darunter auch der ungefähre Programmaufbau. Ausserhalb jeglicher Funktionen legen wir am Programmanfang unsere Variablen, Konstanten und Attribute fest, die dann ''global'' nutzbar sind, also in jeder Funktion.&lt;br /&gt;
&lt;br /&gt;
Darunter deklarieren wir dann eine kleine Funktion. Wie auch bei den Variablendeklarationen wird hier der Rückgabetyp nicht wie bei Pascal nach dem Funktionsnamen untergebracht, sondern davor. Innerhalb der Funktion können dann wieder Variablen deklariert werden, die dann allerdings ''lokal'', also nur in dieser Funktion nutzbar sind. Vorteil dieser Deklaration ist die Tatsache, dass je nach Grafikkarte nur bestimmt viele globale Variablen deklariert werden können. Wenn möglich sollte man also mit lokalen Vorlieb nehmen. Unsere Funktion gibt dann natürlich noch via return einen Wert zurück, ''was gemacht werden muss'', sofern man diese nicht als void deklariert hat (entspräche dann einer Prozedur in Pascal). Wird dies nicht getan, so spuckt der Compiler einen Fehler aus.&lt;br /&gt;
&lt;br /&gt;
Auch wichtig sind natürlich Kommentare. Erste Variante (Doppelslash) ist auch in der Pascalwelt verfügbar und kommentiert eine einzelne Zeile aus. Die Variante darunter kann man für Kommentarblöcke nutzen (/* .. */) und entspricht den Kommentaren in geschweiften Klammern in Delphi.&lt;br /&gt;
&lt;br /&gt;
Danach kommt dann die '''wichtigste Funktion''' des Shaders, nämlich '''main''', die in keinem Shader fehlen darf. Sie stellt quasi den Programmkörper dar und ist oft auch die einzige Funktion in einem Shader. Sie erhält weder ein Argument, noch gibt sie einen Wert zurück.&lt;br /&gt;
&lt;br /&gt;
Soviel also zum grundlegenden Aufbau eines Shader. Hoffe das jetzt alle die in C nicht so bewandert sind damit klar kommen, und dann bald ihre ersten glSlang-Shader schreiben können.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Datentypen==&lt;br /&gt;
&lt;br /&gt;
Obwohl einige Datentypen aus C übernommen wurden, sieht man der Typenliste an, das diese speziell auf den 3D-Bereich zugeschnitten wurde. Variablen müssen vor ihrer Nutzung eindeutig deklariert sein, Typecasting erfolgt über Konstruktoren (dazu später mehr). Folgende Datentypen stehen sowohl im Vertex- als auch Fragmentshader zur Verfügung :&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}}&lt;br /&gt;
!Datentyp  	&lt;br /&gt;
!Erklärung&lt;br /&gt;
|-&lt;br /&gt;
|void 	&lt;br /&gt;
|Für Funktionen die keinen Wert zurückgeben&lt;br /&gt;
|-&lt;br /&gt;
|bool 	&lt;br /&gt;
|Konditionaler Typ, entweder true (wahr) oder false (falsch)&lt;br /&gt;
|-&lt;br /&gt;
|int 	&lt;br /&gt;
|Vorzeichenbehafteter Integerwert&lt;br /&gt;
|-&lt;br /&gt;
|float 	&lt;br /&gt;
|Fließkommaskalar mit Singlegenauigkeit (32 Bit)&lt;br /&gt;
|-&lt;br /&gt;
|vec2 	&lt;br /&gt;
|2-Komponenten Fließkommavektor&lt;br /&gt;
|-&lt;br /&gt;
|vec3 	&lt;br /&gt;
|3-Komponenten Fließkommavektor&lt;br /&gt;
|-&lt;br /&gt;
|vec4 	&lt;br /&gt;
|4-Komponenten Fließkommavektor&lt;br /&gt;
|-&lt;br /&gt;
|bvec2 	&lt;br /&gt;
|2-Komponenten Booleanvektor&lt;br /&gt;
|-&lt;br /&gt;
|bvec3 	&lt;br /&gt;
|3-Komponenten Booleanvektor&lt;br /&gt;
|-&lt;br /&gt;
|bvec4 	&lt;br /&gt;
|4-Komponenten Booleanvektor&lt;br /&gt;
|-&lt;br /&gt;
|ivec2 	&lt;br /&gt;
|2-Komponenten Integervektor&lt;br /&gt;
|-&lt;br /&gt;
|ivec3 	&lt;br /&gt;
|3-Komponenten Integervektor&lt;br /&gt;
|-&lt;br /&gt;
|ivec4 	&lt;br /&gt;
|4-Komponenten Integervektor&lt;br /&gt;
|-&lt;br /&gt;
|mat2 	&lt;br /&gt;
|2x2 Fließkommamatrix&lt;br /&gt;
|-&lt;br /&gt;
|mat3 	&lt;br /&gt;
|3x3 Fließkommamatrix&lt;br /&gt;
|-&lt;br /&gt;
|mat4 	&lt;br /&gt;
|4x4 Fließkommamatrix&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die sampler-Typen stellen eine besondere Klasse zum Zugriff auf Texturen dar, und werden im Kapitel 6.7 genauer erklärt, inklusive einiger Anwendungsbeispiele.&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}}&lt;br /&gt;
!Datentyp  	&lt;br /&gt;
!Erklärung&lt;br /&gt;
|-&lt;br /&gt;
|sampler1D 	&lt;br /&gt;
|Zugriff auf 1D-Textur&lt;br /&gt;
|-&lt;br /&gt;
|sampler2D 	&lt;br /&gt;
|Zugriff auf 2D-Textur&lt;br /&gt;
|-&lt;br /&gt;
|sampler3D 	&lt;br /&gt;
|Zugriff auf 3D-Textur&lt;br /&gt;
|-&lt;br /&gt;
|samplerCube 	&lt;br /&gt;
|Zugriff auf Cubemap&lt;br /&gt;
|-&lt;br /&gt;
|sampler2DRect 	&lt;br /&gt;
|Zugriff auf Texturen die nicht 2^n * 2^n entsprechen (&amp;quot;non power-of-two&amp;quot;, NPOT)&lt;br /&gt;
|-&lt;br /&gt;
|sampler1DShadow 	&lt;br /&gt;
|Zugriff auf 1D-Tiefentextur mit Vergleichsoperation&lt;br /&gt;
|-&lt;br /&gt;
|sampler2DShadow 	&lt;br /&gt;
|Zugriff auf 2D-Tiefentextur mit Vergleichsoperation&lt;br /&gt;
|-&lt;br /&gt;
|samplerCubeShadow&lt;br /&gt;
|Zugriff auf Tiefentextur in einer Cubemap (z.b. für omni-diretionale Lichtquellen)&lt;br /&gt;
|-&lt;br /&gt;
|sampler2DRectShadow&lt;br /&gt;
|Zugriff auf 2D-NPOT-Tiefentextur &lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|sampler1DArray&lt;br /&gt;
|Zugriff auf ein array aus 1D-Texturen &lt;br /&gt;
|-&lt;br /&gt;
|sampler2DArray&lt;br /&gt;
|Zugriff auf ein array aus 2D-Texturen &lt;br /&gt;
|-&lt;br /&gt;
|sampler1DArrayShadow&lt;br /&gt;
|Zugriff auf ein array aus 1D-Tiefentexturen &lt;br /&gt;
|-&lt;br /&gt;
|sampler2DArrayShadow&lt;br /&gt;
|Zugriff auf ein array aus 2D-Tiefentexturen &lt;br /&gt;
|-&lt;br /&gt;
|samplerBuffer&lt;br /&gt;
|Zugriff auf eine Puffertextur (1D-Texutr zum Speichern von Pufferobjekten)&lt;br /&gt;
|-&lt;br /&gt;
|sampler2DMS&lt;br /&gt;
|Zugriff auf eine 2D-Textur mit mehreren Samplepunkten (z.b. für Multisampling)&lt;br /&gt;
|-&lt;br /&gt;
|sampler2DMSArray&lt;br /&gt;
|Zugriff auf einarray aus 2D-Textur mit mehreren Samplepunkten (z.b. für Multisampling)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arrays===&lt;br /&gt;
&lt;br /&gt;
Natürlich unterstützt glSlang auch Arrays, die wie in C deklariert werden und deren Index bei 0 beginnt. Folgendes Array im Shader :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
float temp[3];&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
beginnt also bei Index 0 und endet bei Index 2. Im Gegensatz zu C lassen sich Arrays in glSlang allerdings ''nicht bei der Initialisierung vorbelegen''. Wenn ein Array als Parameter einer Funktion deklariert wird, so darf dieses keine Dimensionierung erhalten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Strukturen===&lt;br /&gt;
&lt;br /&gt;
Neu ggü. ARB_FP/VP ist nun auch die Möglichkeit, Strukturen in einem Shader zu deklarieren. Vor allem die Übersicht komplexerer Shader kann dadurch stark verbessert werden. Strukturen werden wie gewohnt mit dem Schlüsselwort {{INLINE_CODE|struct}} eingeleitet und können dann zur Typisierung von Variablen genutzt werden. Folgendes Beispiel dürfte die Nutzung verdeutlichen :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
struct light&lt;br /&gt;
{&lt;br /&gt;
    bool active;&lt;br /&gt;
    float intensity;&lt;br /&gt;
    vec3 position;&lt;br /&gt;
    vec3 color;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Im Shader können dann neue Variablen von diesem Typ ganz einfach deklariert werden :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
 light LightSource[3];&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Der Zugriff auf die Elemente der Struktur erfolgt dann wie gewohnt über den Punkt :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
LightSource[i].position = vec3(1.0, 1.0, 5.0);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Typenqualifzierer==&lt;br /&gt;
&lt;br /&gt;
Zusätzlich zur Typendeklaration kann eine Variable noch einen Typenqualifizerer vorangestellt bekommen, der an den Anfang der Deklaration gehört.&lt;br /&gt;
&lt;br /&gt;
* '''const'''&lt;br /&gt;
: Festgelegte (nur lesen) Konstante bzw. nur lesbarer Funktionsparameter.&lt;br /&gt;
&lt;br /&gt;
* '''uniform'''&lt;br /&gt;
: Ein den ganzen Shader über gleichbleibender Wert, der eine Schnittstelle zwischen dem Shader und der OpenGL-Anwendung darstellt. Ein Uniformwert wird in der Hauptanwendung an den entsprechenden Shader übergeben und kann dort dann genutzt werden.&lt;br /&gt;
&lt;br /&gt;
* '''attribute'''&lt;br /&gt;
: Nur lesbare Werte die eine Verbindung zwischen dem Shader und der OpenGL-VertexAPI darstellen (z.B. VertexParameter eines VertexArrays). Natürlich nur in einem Vertex Shader nutzbar.&lt;br /&gt;
&lt;br /&gt;
* '''varying'''&lt;br /&gt;
: Stellt die Verbindung zwischen einem Vertex- und einem FragmentShader dar. Werden im VertexShader geschrieben und dann perspektivisch korrekt über die Primitive interpoliert, um dann im Fragment Shader gelesen werden zu können. Nutzbar sind hier nur die Typen float, vec2, vec3, vec4, mat2, mat3 und mat4, Strukturen und andere Datentypen können nicht varying sein. Die Namen einer varying-Variable müssen sowohl im VertexShader als auch im FragmentShader gleich sein.&lt;br /&gt;
&lt;br /&gt;
* '''in'''&lt;br /&gt;
: Für Variablen die an eine Funktion übergeben und dort ausgelesen werden.&lt;br /&gt;
&lt;br /&gt;
* '''out'''&lt;br /&gt;
: Für Variablen die von einer Funktion nach aussen zurückgegeben werden.&lt;br /&gt;
&lt;br /&gt;
* '''inout'''&lt;br /&gt;
: Für Variablen die sowohl an eine Funktion übergeben als auch von dieser zurückgegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um obige Auflistung nicht leer im Raum stehen zu lassen zeige ich ein paar Beispiele die hoffentlich zum Verständnis beitragen :&lt;br /&gt;
&lt;br /&gt;
===Beispiel A=== &lt;br /&gt;
Vertexnormale soll an einen FragmenShader (interpoliert) übergeben werden :&lt;br /&gt;
&lt;br /&gt;
:Im VertexShader :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
varying vec3 VertexNormal;&lt;br /&gt;
...&lt;br /&gt;
VertexNormal = normalize(MV_IT * gl_Normal);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:Im FragmentShader :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
varying vec3 VertexNormal;&lt;br /&gt;
...&lt;br /&gt;
TempVector = VertexNormal*...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Beispiel B=== &lt;br /&gt;
Uniformparameter zur nachträglichen Farbänderung der Szene wird im Programm übergeben :&lt;br /&gt;
&lt;br /&gt;
:Im VertexShader :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
uniform vec4 GlobalColor;&lt;br /&gt;
...&lt;br /&gt;
gl_FrontColor = GlobalColor * gl_Color;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:Im Programm :&lt;br /&gt;
&lt;br /&gt;
 glUniform4fARB(glSlang_GetUniLoc(ProgramObject, 'GlobalColor'), Col[0], Col[1], Col[2], Col[3]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Beispiel C=== &lt;br /&gt;
Konstante zur festen Farbänderung :&lt;br /&gt;
&lt;br /&gt;
:Im VertexShader :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
const vec4 ColorBias = vec4(0.2, 0.3, 0.0, 0.0);&lt;br /&gt;
...&lt;br /&gt;
gl_FrontColor = ColorBias * gl_Color;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==Konstruktoren==&lt;br /&gt;
&lt;br /&gt;
Um in einem Shader ''Vektoren'' oder ''Matrizen'' mit Werten zu belegen, gibt es sogenannte Konstruktoren (nicht zu verwechseln mit z.B. Klassenkonstruktoren unter Delphi), die im Endeffekt nichts anderes als Funktionen zur Vorbelegung von Vektoren oder Matrizen darstellen. Dabei trägt der Konstruktor den selben Namen wie die Typendeklaration, also lässt sich eine Variable vom Typ {{INLINE_CODE|vec4}} mit dem Konstruktor {{INLINE_CODE|vec4(float, float, float, float)}} initialisieren.&lt;br /&gt;
&lt;br /&gt;
Allerdings hat man sich recht viel Mühe bei dieser Konstruktorgeschichte gemacht, so dass man einen vec4 nicht unbedingt mit einem {{INLINE_CODE|vec4}}-Konstruktor vorbelegen muss, sondern es vielseitige Möglichkeiten gibt. Um dies zu verdeutlichen gibts ein paar Beispiele :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
vec4 Color = vec4(1.0, 0.0, 0.0, 0.0);&lt;br /&gt;
vec4 Color = vec4(MyVec3, 1.0);&lt;br /&gt;
vec4 Color = vec4(MyVec2_A, MyVec2_B);&lt;br /&gt;
&lt;br /&gt;
vec3 LVec  = vec3(MyVec4);&lt;br /&gt;
vec2 Tmp   = vec2(MyVec3);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Trotz der recht wenigen Beispiele sollte schnell erkennbar sein, das man hier wirklich sehr viele Kombinationsmöglichkeiten hat, die dann gültig sind ''wenn man mindestens auf die benötigte Anzahl der Argumente kommt''. Im vorletzten Beispiel wird z.B. ein 3-Komponentenvektor aus einem 4-Komponentenvektor initialisiert. Das erzeugt keinen Fehler, sondern führt dazu das {{INLINE_CODE|vec3.x, vec3.y, vec3.z}} aus MyVec4 übernommen werden und MyVec4.w einfach ignoriert wird.&lt;br /&gt;
&lt;br /&gt;
Das Umkehrbeispiel, also&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
vec4 Color = vec4(MyVec3)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
funktioniert allerdings nicht, da hier die Zahl der benötigten Argumente nicht erreicht wird. In diesem Falle müsste es dann&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt; &lt;br /&gt;
vec4 Color = vec4(MyVec3, 0.0)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
heissen.&lt;br /&gt;
&lt;br /&gt;
Obiges gilt natürlich auch für ''Matrixkonstruktoren'', hier sind z.B. folgende Konstuktoren denkbar, obwohl eigentlich alle Möglichkeiten nutzbar sind, ''solange die benötigte Zahl an Argumenten erreicht wird'' :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
mat4 MyMatrix = mat4(MyVec4, MyVec4, MyVec4, MyVec4);&lt;br /&gt;
mat2 MyMatrix = mat4(1.0, 0.0, 0.0, 0.0,&lt;br /&gt;
                     0.0, 1.0, 0.0, 0.0,&lt;br /&gt;
                     0.0, 0.0, 1.0, 0.0,&lt;br /&gt;
                     0.0, 0.0, 0.0, 1.0);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vektor- und Matrixkomponenten==&lt;br /&gt;
&lt;br /&gt;
Was natürlich in keiner Shadersprache fehlen darf, ist der leichte Zugriff auf die einzelnen Komponenten eines Vektors. glSlang bietet, je nach Anwendungsgebiet gleich drei Namensets für den Zugriff auf die Komponenten eines solchen Vektors, welches Set man nutzen will bleibt natürlich frei und ist unabhängig von der Deklaration eines Vektors. Man sollte nur darauf achten, beim gleichzeitigen Zugriff auf mehrere Komponenten im gleichen Namenset zu verbleiben :&lt;br /&gt;
&lt;br /&gt;
* {x, y, z, w}&lt;br /&gt;
:Für den Zugriff auf Vektoren die Punkte, Normale oder sonstige Vertexdaten repräsentieren.&lt;br /&gt;
&lt;br /&gt;
* {r, g, b, a}&lt;br /&gt;
:Für den Zugriff auf Vektoren die Farbwerte repräsentieren.&lt;br /&gt;
&lt;br /&gt;
* {s, t, p, q}&lt;br /&gt;
:Für den Zugriff auf Vektoren die Texturkoordinaten repräsentieren.&lt;br /&gt;
&lt;br /&gt;
Ein paar Beispiele zur Unterstreichung des oben gesagten :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
v4.rgba = vec4(1.0, 0.0, 0.0, 0.0);  // gültig&lt;br /&gt;
v4.rgzw = vec4(1.0, 1.0, 1.0, 2.0);  // Ungültig, da verschiedenen Namensets&lt;br /&gt;
v2.rgb  = vec3(1.0, 2.0, 1.0);       // Ungültig, da vec2 nur r+g besitzt&lt;br /&gt;
v2.xx   = vec2(5.0, 3.0);            // Ungültig, da 2 mal gleiche Komponente&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auch der Zugriff auf die Komponenten einer Matrix geht leicht von der Hand. Namensets wie bei den Vektoren gibt es hier natürlich keine, aber folgende Beispiele sollen den Zugriff aufzeigen :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
MyMat4[2]    = vec4(1.0); // Setzt die 3.Zeile der Matrix komplett auf 1.0&lt;br /&gt;
MyMat4[3][3] = 3.5;       // Setzt das Element unren rechts auf 3.5&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Zugriff auf Matrixelemente ausserhalb ihrer Dimension (also z.B. MyMat4[4][4]) liefert unvorhersehabre Ergebnise, also sollte man auf diese Fälle prüfen. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Vektor- und Matrixoperationen==&lt;br /&gt;
&lt;br /&gt;
Wie von C gewohnt sind in glSlang so ziemlich alle Operatoren die man auf Matrizen oder Vektoren anwenden kann überladen, so das man nicht umständlich über selbstgeschriebene Funktionen kombinieren muss. Darüber hinaus ist es in den meisten Fällen auch möglich ohne Konvertierung Fließkommawerte mit kompletten Matrizen oder Vektoren zu kombinieren. Folgende Beispiele zeigen einige der vielfältigen Kombinationsmöglichkeiten auf :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
vec3  dest;&lt;br /&gt;
vec3  source;&lt;br /&gt;
float factor;&lt;br /&gt;
&lt;br /&gt;
vec3 dest = source + factor; &lt;br /&gt;
&lt;br /&gt;
// Ist gleich&lt;br /&gt;
dest.x = source.x + factor;&lt;br /&gt;
dest.y = source.y + factor;&lt;br /&gt;
dest.z = source.z + factor;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Matrix * Vektor ist auch ohne manuelle Konvertierung möglich :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
vec3  dest;&lt;br /&gt;
vec3  source;&lt;br /&gt;
mat3  MyMat;&lt;br /&gt;
 &lt;br /&gt;
dest = source * MyMat; &lt;br /&gt;
 &lt;br /&gt;
// Ist gleich&lt;br /&gt;
dest.x = dot(source, MyMat[0]);&lt;br /&gt;
dest.y = dot(source, MyMat[1]);&lt;br /&gt;
dest.z = dot(source, MyMat[2]);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auch hier sind die Möglichkeiten fast unbeschränkt und zeigen wieder wie flexibel glSlang ausgelegt ist. &lt;br /&gt;
&lt;br /&gt;
==Operatoren==&lt;br /&gt;
&lt;br /&gt;
glSlang bietet (momentan) folgende Operatoren, die Liste ist nach ihrer Gewichtung sortiert (Anfang = höchste). Alle ''reservierten'' Operatoren werden erst in kommender Hardware/glSlang-Versionen nutzbar sein :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div  align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{|{{Prettytable_B1}}&lt;br /&gt;
!Operatorklasse  	&lt;br /&gt;
!Operatoren  	&lt;br /&gt;
!Assoziation&lt;br /&gt;
|-&lt;br /&gt;
|Gruppering 	&lt;br /&gt;
|() 	&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Arrayindizierung&amp;lt;br&amp;gt;Funktionsaufrufe und Konstruktoren&amp;lt;br&amp;gt;Strukturfeldwahl und Swizzle&amp;lt;br&amp;gt;Postinkrement und -dekrement&amp;lt;br&amp;gt; 	&lt;br /&gt;
|[]&amp;lt;br&amp;gt;()&amp;lt;br&amp;gt;.&amp;lt;br&amp;gt;++ -- 	&lt;br /&gt;
|Links n. Rechts&lt;br /&gt;
|-&lt;br /&gt;
|Prefixinkrement- und dekrement&amp;lt;br&amp;gt;Einheitlich (~ reserviert) 	&lt;br /&gt;
| ++ --&amp;lt;br&amp;gt; + - ~ ! 	&lt;br /&gt;
|Rechts n. Links&lt;br /&gt;
|-&lt;br /&gt;
|Mulitplikation (% reserviert) 	&lt;br /&gt;
|* / % 	&lt;br /&gt;
|Links n. Rechts&lt;br /&gt;
|-&lt;br /&gt;
|Additiv 	&lt;br /&gt;
| + - 	&lt;br /&gt;
|Links n. Rechts&lt;br /&gt;
|-&lt;br /&gt;
|Bitweises Verschieben (reserviert) 	&lt;br /&gt;
|&amp;lt;&amp;lt;  &amp;gt;&amp;gt; 	&lt;br /&gt;
|Links n. Rechts&lt;br /&gt;
|-&lt;br /&gt;
|Relation 	&lt;br /&gt;
|&amp;lt;  &amp;gt;  &amp;lt;=  &amp;gt;= 	&lt;br /&gt;
|Links n. Rechts&lt;br /&gt;
|-&lt;br /&gt;
|Vergleich 	&lt;br /&gt;
|==  != 	&lt;br /&gt;
|Links n. Rechts&lt;br /&gt;
|-&lt;br /&gt;
|Bitweises AND (reserviert) 	&lt;br /&gt;
|&amp;amp; 	&lt;br /&gt;
|Links n. Rechts&lt;br /&gt;
|-&lt;br /&gt;
|Bitweises XOR (reserviert) 	&lt;br /&gt;
|^ 	&lt;br /&gt;
|Links n. Rechts&lt;br /&gt;
|-&lt;br /&gt;
|Bitweises OR (reserviert) 	&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 	&lt;br /&gt;
|Links n. Rechts&lt;br /&gt;
|-&lt;br /&gt;
|Logisches AND 	&lt;br /&gt;
|&amp;amp;&amp;amp; 	&lt;br /&gt;
|Links n. Rechts&lt;br /&gt;
|-&lt;br /&gt;
|Logisches XOR 	&lt;br /&gt;
|^^ 	&lt;br /&gt;
|Links n. Rechts&lt;br /&gt;
|-&lt;br /&gt;
|Logisches OR 	&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt; 	&lt;br /&gt;
|Links n. Rechts&lt;br /&gt;
|-&lt;br /&gt;
|Auswahl 	&lt;br /&gt;
|?: 	&lt;br /&gt;
|Rechts n. Links&lt;br /&gt;
|-&lt;br /&gt;
|Zuweisung&amp;lt;br&amp;gt;Arithmetrische Zuweisung&amp;lt;br&amp;gt;(Modulis, Shift und bitweise Op. reserviert) 	&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt; &amp;lt;nowiki&amp;gt;+= -=  *=  /=  %=&amp;lt;/nowiki&amp;gt; &amp;lt;br&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;=  &amp;gt;&amp;gt;= &amp;amp;=  ^=  |=&amp;lt;/nowiki&amp;gt; 	&lt;br /&gt;
|Rechts n. Links&lt;br /&gt;
|-&lt;br /&gt;
|Aufzählung 	&lt;br /&gt;
|, 	&lt;br /&gt;
|Links n. Rechts&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Funktionen==&lt;br /&gt;
&lt;br /&gt;
Ein großer Vorteil von Hochsprachen ist u.A. die Möglichkeit oft genutzte Codeteile in Funktionen (bzw. auch Prozeduren unter Pascal) zu verpacken um so Flexibilität als auch Übersichtlichkeit zu steigern. Wer schonmal was in C geschrieben hat, der wird sich jetzt sicherlich kein Kopfzerbrechen machen müssen. Funktionen werden in glSlang genauso nach folgendem Prinzip deklariert :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
RückgabeTyp FunktionsName(Typ0 Argument0, Typ1, Argument1, ... , TypN, ArgumentN)&lt;br /&gt;
 {&lt;br /&gt;
 return RückgabeWert;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funktionen die ''nichts zurückgeben'' müssen mit dem RückgabeTyp {{INLINE_CODE|void}} deklariert werden, ausserdem entfällt dann logischerweise das {{INLINE_CODE|return}}. Falls die Funktion eines ihrere Argumente nach aussen übergeben soll, muss dieses Argument mit dem Typenqualifizierer out (Siehe Kapitel 4.2) versehen werden. ''Arrays'' können nur als Eingabeargumente übergeben werden und dürfen nich dimensioniert als Argument verwendet werden, sondern müssen mit leeren Klammern argumentiert werden.&lt;br /&gt;
Ein paar Beispiele :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
void MeineFunktion(float EingabeWert; out float AusgabeWert)&lt;br /&gt;
 {&lt;br /&gt;
 AusgabeWert = EingabeWert*MyConstValue;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Funktion gibt ''nichts'' zurück, aber gibt EingabeWert*MyConstValue im Ausgabeargument AusgabeWert nach aussen.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
float MeineFunktion(float EingabeWert)&lt;br /&gt;
 {&lt;br /&gt;
 return EingabeWert*MyConstValue;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bietet genau die selbe Funktionalität wie das Beispiel darüber. Allerdings wird hier der berechnete Wert als Ergebnis der Funktion zurückgeliefert.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
float VektorSumme(float v[])&lt;br /&gt;
 {&lt;br /&gt;
 return v[0]+v[1]+v[2]+v[3];&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie bereits gesagt darf ein Array als Argument keine Dimensionierung enthalten. Wenn man der Funktion also ein Array übergibt, sollte man vorher drauf achten das es entsprechend der in der Funktion genutzten Indizes dimensioniert wurde.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==if-Anweisung==&lt;br /&gt;
&lt;br /&gt;
Selektion über eine if-Anweisung darf auch in keiner Hochsprache fehlen. Genauso wie in C oder Delphi erwartet auch hier die If-Anweisung einen boolschen Ausdruck (Wahr oder Falsch) und wird dann ausgeführt (wahr) bzw. verzweigt auf ein (wenn vorhanden) else (falsch). Verschachtelung ist wie erwartet auch möglich.&lt;br /&gt;
&lt;br /&gt;
'''Hinweis : ''' &lt;br /&gt;
Grafikkarten auf dem Stand des Shadermodells 2.0 (Radeon 9x00, Radeon X8x0, GeForceFX 5x00) unterstüzten im Fragmentshader kein Early-Out, was zur Folge hat das bei einer If-Anweisung immer alle Zweige ausgeführt werden. Am Ende wird dann aber nur ein Ergebnis geschrieben, die anderen verworfen. Auf solchen Karten bringen If-Anweisungen also im Normalfall keine Geschwindigkeitssteigerung, sondern oft eher das Gegenteil.&lt;br /&gt;
Neuere SM3.0-Karten (Radeon X1x00, GeForce6x00 und höher) ist dass nicht mehr der Fall, da hier dynamische Verzweigungen und auch Early-Out von der Hardware implementiert werden.&lt;br /&gt;
&lt;br /&gt;
==Schleifen==&lt;br /&gt;
&lt;br /&gt;
Auch Schleifen, ein wichtiges Konzept jeder Hochsprache haben ihren Weg in glSlang gefunden. Unterstützt werden folgende Schleifentypen :&lt;br /&gt;
&lt;br /&gt;
* '''for'''-Schleife&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
for (Startausdruck; Durchlaufbedingung; Wiederholungsausdruck)&lt;br /&gt;
  {&lt;br /&gt;
   statement&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''while'''-Schleife&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
while (Durchlaufbedingung)&lt;br /&gt;
 {&lt;br /&gt;
  statement&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''do'''-while-Schleife&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
do&lt;br /&gt;
 {&lt;br /&gt;
  statement&lt;br /&gt;
 }&lt;br /&gt;
 while (Durchlaufbedingung)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Hinweis :''' Grafikkarten auf dem Stand des Shadermodells 2.0 (Radeon 9x00, Radeon X8x0, GeForceFX 5x00) unterstüzten Schleifen nicht in Hardware. Schleifen werden dann beim Kompilieren vom Treiber entrollt, wodurch natürlich Shader mit weitaus mehr Instruktionen als erwartet generiert werden. Von daher sollte man auf solchen Karten möglichst auf Schleifen verzichten, oder diese nur recht kurz halten. Bei SM3.0-Karten (Radeon X1x00, GeForce6x00 und höher) ist dass nicht mehr der Fall.&lt;br /&gt;
&lt;br /&gt;
=Eingebaute Variablen, Attribute und Konstanten=&lt;br /&gt;
Nachdem wir uns nun lange genug mit den minderinterssanten Elementen der glSlang-Syntax beschäftigt haben, gehts jetzt endlich an die wirklich interessanten Dinge. Wie schon ARB_VP/ARB_FP bringt auch glSlang jede Menge eingabauter Variablen, Attribute und Konstanten mit, deren Aliase sie recht leicht identifizierbar machen (ganz im Gegensatz zum Indexgewusel bei den DX-Shadern).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Variablen im Vertex Shader==&lt;br /&gt;
Exklusiv im Vertex Shader stehen die folgenden Variablen zur Verfügung :&lt;br /&gt;
&lt;br /&gt;
* vec4 gl_Position    muss geschrieben werden&lt;br /&gt;
:Dieser Variable '''muss''' im Vertexshader ein Wert zugewiesen werden, wird dies nicht getan ist das Ergebnis (sprich die Position des Vertex) undefiniert. Vorgesehen ist diese Variable für die ''homogene Position des Vertex'' und wird u.a. zum Clipping und Culling verwendet. Sie darf natürlich auch (mehrfach) geschrieben und ausgelesen werden.&lt;br /&gt;
&lt;br /&gt;
* float gl_PointSize    kann geschrieben werden&lt;br /&gt;
:Diese Variable wurde dazu vorgesehen um dort im VertexShader die Punktgröße in Pixeln hineinzuschreiben.&lt;br /&gt;
&lt;br /&gt;
* vec4 gl_ClipVertex    kann geschrieben werden&lt;br /&gt;
:Falls genutzt, sollten hier die Vertexkoordinaten die im Zusammenhang mit benutzerdefinierten Clippingplanes genutzt werden abgelegt werden. Wichtig ist, das gl_ClipVertex im selben Koordinatenraum wie die Clippingplane definiert ist.&lt;br /&gt;
&lt;br /&gt;
==Attribute im Vertex Shader==&lt;br /&gt;
&lt;br /&gt;
Folgende Attribute stehen nur im Vertex Shader zur Verfügung und '''können nur gelesen werden''' :&lt;br /&gt;
&lt;br /&gt;
* vec4 gl_Color&lt;br /&gt;
: Farbwert des Vertex.&lt;br /&gt;
* vec4 gl_SecondaryColor&lt;br /&gt;
:Sekundärer Farbwert des Vertex.&lt;br /&gt;
* vec4 gl_Normal&lt;br /&gt;
:Normale des Vertex.&lt;br /&gt;
* vec4 gl_Vertex&lt;br /&gt;
:Koordinaten des Vertex;&lt;br /&gt;
* vec4 gl_MultiTexCoord0..7&lt;br /&gt;
:Texturkoordinaten auf Textureinheit 0..7.&lt;br /&gt;
* float gl_FogCoord&lt;br /&gt;
:Nebelkoordinate des Vertex. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Variablen im Fragment Shader==&lt;br /&gt;
&lt;br /&gt;
Im Fragment Shader sind folgende Variablen exklusiv nutzbar :&lt;br /&gt;
&lt;br /&gt;
* vec4 gl_FragColor&lt;br /&gt;
: Speichert den Farbwert des Fragmentes, der von folgenden Funktionen der festen Pipeline genutzt wird. Wird dieser Variable nichts zugewiesen, so ist ihr Inhalt undefiniert und darauf aufbauende Ergebnisse ebenfalls.&lt;br /&gt;
&lt;br /&gt;
* vec4 gl_FragData[0..15]&lt;br /&gt;
: Ersetzt gl_FragColor bei der Verwendung von multiplen Rendertargets. &lt;br /&gt;
&lt;br /&gt;
* float gl_FragDepth&lt;br /&gt;
: Durch schreiben dieser Variable kann man den von der festen Funktionspipeline ermittelten Tiefenwert überspringen, der mit {{INLINE_CODE|gl_FragCoord.z}} ausgelesen werden kann. Wird dieser Wert nicht geschrieben, nutzen folgende Funktionen der Pipeline den vorher fest berechneten Wert.&lt;br /&gt;
&lt;br /&gt;
* vec4 gl_FragCoord    nur lesen&lt;br /&gt;
: In dieser Variable ist die Position des Fragmentes relativ zur Fensterposition im Format x,y,z,1/w abgelegt, wobei z den von der festen Funktionspipeline berechneten Tiefenwert enthält.&lt;br /&gt;
&lt;br /&gt;
* bool gl_FrontFacing    nur lesen&lt;br /&gt;
: Gibt an ob das Fragment zu einer nach vorne zeigenden Primitive gehört (=true). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Bezug auf {{INLINE_CODE|gl_FragColor}} und {{INLINE_CODE|gl_FragDepth}} sei noch anzumerken das diese ''nicht'' in den Wertebereich 0..1 gebracht werden müssen, da dies später durch die feste Funktionspipeline automatisch gemacht wird.&lt;br /&gt;
&lt;br /&gt;
==Eingebaute Varyings==&lt;br /&gt;
&lt;br /&gt;
Wie bereits in Kapitel 4.2 erwähnt, stellen Varyings eine Schnittstelle zwischen dem Vertex und dem Fragment Shader dar. Sie werden im Vertex Shader geschrieben und können dann im Fragment Shader ausgelesen werden, ohne das die folgenden Varyings dafür explizit deklariert werden müssen :&lt;br /&gt;
&lt;br /&gt;
* vec4 gl_FrontColor&lt;br /&gt;
: Farbe der Vorderseite des Vertex.&lt;br /&gt;
&lt;br /&gt;
* vec4 gl_BackColor&lt;br /&gt;
: Farbe der Rückseite des Vertex.&lt;br /&gt;
&lt;br /&gt;
* vec4 gl_FrontSecondaryColor&lt;br /&gt;
: Sekundäre Farbe der Vorderseite des Vertex.&lt;br /&gt;
&lt;br /&gt;
* vec4 gl_BackSecondaryColor&lt;br /&gt;
: Sekundäre Farbe der Rückseite des Vertex.&lt;br /&gt;
&lt;br /&gt;
* vec4 gl_TexCoord[x]&lt;br /&gt;
: Texturkoordinaten des Vertex auf Textureinheit x, wobei x die von der Hardware zur Verfügung gestellte Zahl der Textureinheiten-1 nicht überschreiten darf.&lt;br /&gt;
&lt;br /&gt;
* float gl_FogFragCoord&lt;br /&gt;
: Nebelkoordinate des Fragmentes. &lt;br /&gt;
&lt;br /&gt;
Die Varyings {{INLINE_CODE|gl_FrontColor, gl_FrontSecondaryColor, gl_BackColor}} und {{INLINE_CODE|gl_BackSecondaryColor}} können im FragmentShader nur unter den Aliases gl_Color bzw. gl_SecondaryColor gelesen werden. Welcher Wert des Vertex Shaders im Fragment Shader dort eingesetzt wird ist abhängig davon ob das Fragment zu einer nach vorne oder nach hinten zeigenden Primitive gehört.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Eingebaute Konstanten==&lt;br /&gt;
Auch diverse Konstanten wurden definiert um darauf schnell im Shader zugreifen zu können. In den Klammern stehen die von einer GL-Implementation als Mindestanforderung anzubietenden Werte. Alle Konstanten sind sowohl im Vertex als auch im Fragment Shader abrufbar :&lt;br /&gt;
&lt;br /&gt;
: OpenGL 1.0/1.2 :&lt;br /&gt;
* int gl_MaxLights (8)&lt;br /&gt;
* int gl_MaxClipPlanes (6)&lt;br /&gt;
* int gl_MaxTextureUnits (2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: ARB_Fragment_Program :&lt;br /&gt;
* int gl_MaxTextureCoordsARB (2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: Vertex_Shader :&lt;br /&gt;
* int gl_MaxVertexAttributesGL2 (16)&lt;br /&gt;
* int gl_MaxVertexUniformFloatsGL2 (512)&lt;br /&gt;
* int gl_MaxVaryingFloatsGL2 (32)&lt;br /&gt;
* int gl_MaxVertexTextureUnitsGL2 (1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: Fragment_Shader :&lt;br /&gt;
* int gl_MaxFragmentTextureUnitsGL2 (2)&lt;br /&gt;
* int gl_MaxFragmentUniformFloatsGL2 (64)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Eingebaute Uniformvariablen==&lt;br /&gt;
&lt;br /&gt;
Um den Zugriff auf OpenGL-Staten zu vereinfachen wurden in glSlang diverse Uniformvariablen zur direkten Verwendung im Shader eingebaut. Wie gewohnt wurden auch hier sinnvolle Namen verwendet, so dass eine tiefere Erklärung unnötig sein dürfte :&lt;br /&gt;
&lt;br /&gt;
* mat4 gl_ModelViewMatrix&lt;br /&gt;
* mat4 gl_ProjectionMatrix&lt;br /&gt;
* mat4 gl_ModelViewProjectionMatrix&lt;br /&gt;
* mat3 gl_NormalMatrix&lt;br /&gt;
:{{INLINE_CODE|gl_NormalMatrix}} repräsentiert die invertierten und anschließend transponierten oberen 3x3 Werte der {{INLINE_CODE|gl_ModelViewMatrix}}.&lt;br /&gt;
* mat4 gl_TextureMatrix[gl_MaxTextureCoordsARB]&lt;br /&gt;
&lt;br /&gt;
* float gl_NormalScale&lt;br /&gt;
: Gibt den unter OpenGL festgelegten Faktor zur Skalierung der Normalen zurück.&lt;br /&gt;
&lt;br /&gt;
* struct gl_DepthRangeParameters&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
struct gl_DepthRangeParameters&lt;br /&gt;
{&lt;br /&gt;
 float near;&lt;br /&gt;
 float far;&lt;br /&gt;
 float diff;&lt;br /&gt;
};&lt;br /&gt;
gl_DepthRangeParameters gl_DepthRange;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
: Clippingplanes : &lt;br /&gt;
* vec4 gl_ClipPlane[gl_MaxClipPlanes]&lt;br /&gt;
  &lt;br /&gt;
*struct gl_PointParameters&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
struct gl_PointParameters&lt;br /&gt;
{&lt;br /&gt;
 float size;&lt;br /&gt;
 float sizeMin;&lt;br /&gt;
 float sizeMax;&lt;br /&gt;
 float fadeThresholdSize;&lt;br /&gt;
 float distanceConstantAttenuation;&lt;br /&gt;
 float distanceLinearAttenuation;&lt;br /&gt;
 float distanceQuadraticAttenuation;&lt;br /&gt;
};&lt;br /&gt;
gl_PointParameters gl_Point;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*struct gl_MaterialParameters&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
struct gl_MaterialParameters&lt;br /&gt;
{&lt;br /&gt;
 vec4 emission;&lt;br /&gt;
 vec4 ambient;&lt;br /&gt;
 vec4 diffuse;&lt;br /&gt;
 vec4 specular;&lt;br /&gt;
 float shininess;&lt;br /&gt;
};&lt;br /&gt;
gl_MaterialParameters gl_FrontMaterial;&lt;br /&gt;
gl_MaterialParameters gl_BackMaterial;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*struct gl_LightSourceParameters&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
struct gl_LightSourceParameters&lt;br /&gt;
{&lt;br /&gt;
 vec4 ambient;&lt;br /&gt;
 vec4 diffuse;&lt;br /&gt;
 vec4 specular;&lt;br /&gt;
 vec4 position;&lt;br /&gt;
 vec4 halfVector;&lt;br /&gt;
 vec3 spotDirection;&lt;br /&gt;
 float spotExponent;&lt;br /&gt;
 float spotCutoff;&lt;br /&gt;
 float spotCosCutoff;&lt;br /&gt;
 float constantAttenuation;&lt;br /&gt;
 float linearAttenuation;&lt;br /&gt;
 float quadraticAttenuation;&lt;br /&gt;
};&lt;br /&gt;
gl_LightSourceParameters gl_LightSource[gl_MaxLights];&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*struct gl_LightModelParameters&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
struct gl_LightModelParameters&lt;br /&gt;
{&lt;br /&gt;
 vec4 ambient;&lt;br /&gt;
};&lt;br /&gt;
gl_LightModelParameters gl_LightModel;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*struct gl_LightModelProducts&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
struct gl_LightModelProducts&lt;br /&gt;
{&lt;br /&gt;
 vec4 sceneColor;&lt;br /&gt;
};&lt;br /&gt;
gl_LightModelProducts gl_FrontLightModelProduct;&lt;br /&gt;
gl_LightModelProducts gl_BackLightModelProduct;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*struct gl_LightProducts&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
struct gl_LightProducts&lt;br /&gt;
{&lt;br /&gt;
 vec4 ambient;&lt;br /&gt;
 vec4 diffuse;&lt;br /&gt;
 vec4 specular;&lt;br /&gt;
};&lt;br /&gt;
gl_LightProducts gl_FrontLightProduct[gl_MaxLights];&lt;br /&gt;
gl_LightProducts gl_BackLightProduct[gl_MaxLights];&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* vec4 gl_TextureEnvColor[gl_MaxFragmentTextureUnitsGL2]&lt;br /&gt;
* vec4 gl_EyePlaneS[gl_MaxTextureCoordsARB]&lt;br /&gt;
* vec4 gl_EyePlaneT[gl_MaxTextureCoordsARB]&lt;br /&gt;
* vec4 gl_EyePlaneR[gl_MaxTextureCoordsARB]&lt;br /&gt;
* vec4 gl_EyePlaneQ[gl_MaxTextureCoordsARB]&lt;br /&gt;
* vec4 gl_ObjectPlaneS[gl_MaxTextureCoordsARB]&lt;br /&gt;
* vec4 gl_ObjectPlaneT[gl_MaxTextureCoordsARB]&lt;br /&gt;
* vec4 gl_ObjectPlaneR[gl_MaxTextureCoordsARB]&lt;br /&gt;
* vec4 gl_ObjectPlaneQ[gl_MaxTextureCoordsARB]&lt;br /&gt;
&lt;br /&gt;
*struct gl_FogParameters&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
struct gl_FogParameters&lt;br /&gt;
{&lt;br /&gt;
 vec4 color;&lt;br /&gt;
 float density;&lt;br /&gt;
 float start;&lt;br /&gt;
 float end;&lt;br /&gt;
 float scale;&lt;br /&gt;
};&lt;br /&gt;
gl_FogParameters gl_Fog;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Diese recht umfangreiche GL-Stateliste sollte eigentlich jeden Bedarf decken und momentan gibts kaum einen OpenGL-Status den man so nicht in einem Shader abfragen bzw. nutzen kann.&lt;br /&gt;
&lt;br /&gt;
=Eingebaute Funktionen=&lt;br /&gt;
glSlang ist mit diversen Skalar- und Vektorfunktionen ausgestattet, die teilweise (idealerweise) sogar direkt in der Hardware ausgeführt werden, weshalb einer fertigen Funktion ggü. gleichwertigen eigenen Berechnungen immer der Vorzug zu geben ist.&lt;br /&gt;
{{Hinweis| ''genType'' kann vom Type float, vec2, vec3 oder vec4 sein, ''mat'' vom Typ mat2, mat3 oder mat4.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trigonometrie und Winkel==&lt;br /&gt;
Alle übergebenen Winkel sollten, soweit nicht anders vermerkt, in Radien angegeben werden.&lt;br /&gt;
&lt;br /&gt;
* genType radians (genType degrees)&lt;br /&gt;
: Wandelt von Grad nach Radien. &lt;br /&gt;
* genType degrees (genType radians)&lt;br /&gt;
: Wandelt von Radien nach Grad.&lt;br /&gt;
* genType sin (genType angle)&lt;br /&gt;
: Gibt den Sinus von Angle zurück, wobei Angle in Radien angegeben wird.&lt;br /&gt;
* genType cos (genType angle)&lt;br /&gt;
: Gibt den Cosinus von Angle zurück, wobei Angle in Radien angegeben wird.&lt;br /&gt;
* genType tan (genType angle)&lt;br /&gt;
: Gibt den Tangens von Angle zurück, wobei Angle in Radien angegeben wird.&lt;br /&gt;
* genType asin (genType x)&lt;br /&gt;
: Liefert den Arcsinus von x zurück, also den Winkel dessen Sinus x ergeben würde.&lt;br /&gt;
* genType acos (genType x)&lt;br /&gt;
: Liefert den Arccosinus von x zurück, also den Winkel dessen Cosinus x ergeben würde.&lt;br /&gt;
* genType atan (genType y, genType x)&lt;br /&gt;
: Liefert den Winkel zurück, dessen Tangens x/y ergeben würde.&lt;br /&gt;
* genType atan (genType y_over_x)&lt;br /&gt;
: Liefert den Winkel zurück, dessen Tangens x über y ergeben würde.&lt;br /&gt;
&lt;br /&gt;
==Exponentiell==&lt;br /&gt;
* genType pow (genType x, genType y)&lt;br /&gt;
: Gibt x hoch y zurück.&lt;br /&gt;
* genType exp2 (genType x)&lt;br /&gt;
: Gibt 2 hoch x zurück.&lt;br /&gt;
* genType log2 (genType x)&lt;br /&gt;
: Gibt den Logarithmus zur Basis 2 von x zurück.&lt;br /&gt;
* genType sqrt (genType x)&lt;br /&gt;
: Gibt die Wurzel von x zurück.&lt;br /&gt;
* genType inversesqrt (genType x)&lt;br /&gt;
: Gibt die umgekehrte Wurzel von x zurück. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Standardfunktionen==&lt;br /&gt;
* genType abs (genType x)&lt;br /&gt;
: Liefert den absoluten Wert von x zurück.&lt;br /&gt;
* genType sign (genType x)&lt;br /&gt;
: Gibt -1.0 zurück, wenn x &amp;lt; 0.0, 0.0 wenn x = 0.0 und 1.0 wenn x &amp;gt; 0.0.&lt;br /&gt;
* genType floor (genType x)&lt;br /&gt;
: Gibt denn nächsten Integerwert zurück, der kleiner oder gleich x ist.&lt;br /&gt;
* genType ceil (genType x)&lt;br /&gt;
: Gibt den nächsten Integerwert zurück, der größer oder gleich x ist.&lt;br /&gt;
* genType fract (genType x)&lt;br /&gt;
: Gibt den Nachkommateil von x zurück.&lt;br /&gt;
* genType mod (genType x, float y) &lt;br /&gt;
* genType mod (genType x, genType y)&lt;br /&gt;
: Gibt den Modulus zurück. (=x-y * floor(x/y)) &lt;br /&gt;
* genType min (genType x, genType y) &lt;br /&gt;
* genType min (genType x, float y)&lt;br /&gt;
: Liefert y zurück wenn y &amp;lt; x, ansonsten x. &lt;br /&gt;
* genType max (genType x, genType y) &lt;br /&gt;
* genType max (genType x, float y)&lt;br /&gt;
: Liefert y zurück wenn x &amp;lt; y, ansonsten x. &lt;br /&gt;
* genType clamp (genType x, genType minVal, genType maxVal) &lt;br /&gt;
* genType clamp (genType x, float minVal, float maxVal)&lt;br /&gt;
: Zwängt x in den Bereich minVal..maxVal. &lt;br /&gt;
* genType mix (genType x, genType y, genType a)&lt;br /&gt;
* genType mix (genType x, genType y, float a)&lt;br /&gt;
: Liefert den linearen Blend zwischen x und y zurück. (= x * (1-a) + y * a) &lt;br /&gt;
* genType step (genType edge, genType x)&lt;br /&gt;
* genType step (float edge, genType x)&lt;br /&gt;
: Liefert 0.0 zurück, wenn x &amp;lt;= edge, ansonsten 1.0. &lt;br /&gt;
* genType smoothstep (genType edge0, genType edge1, genType x)&lt;br /&gt;
* genType smoothstep (float edge0, float edge1, genType x)&lt;br /&gt;
: Liefert 0.0 zurück, wenn x &amp;lt;= edge und 1.0 wenn x &amp;gt;= edge. Dabei wird eine weiche Hermite Interpolation zwischen 0 und 1 durchgeführt. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Geometrie==&lt;br /&gt;
* float length (genType x)&lt;br /&gt;
: Gibt die Länge des Vektors x (= sqrt(x[0]² + x[1]² + ... + x[n]²) zurück. &lt;br /&gt;
* float distance (genType p0, genType p1)&lt;br /&gt;
: Gibt die Distanz zwischen den zwei Vektoren p0 un p1 (= length(p0-p1)) zurück. &lt;br /&gt;
* float dot (genType x, genType y)&lt;br /&gt;
: Gibt das Punktprodukt von x und y zurück (=x[0]*y[0] + x[1]*y[1] + ... + x[n]*y[n]). &lt;br /&gt;
* vec3 cross (vec3 x, vec3 y)&lt;br /&gt;
: Gibt das Kreuzprodukt von x und y zurück. &lt;br /&gt;
* genType normalize (genType x)&lt;br /&gt;
: Normalisiert den Vektor x auf die Länge 1. &lt;br /&gt;
* vec4 ftransform()&lt;br /&gt;
: Nur im Vertex Shader. Die Funktion stellt sicher, das das eingehende Vertex haargenau so transformiert wird wie in der festen Funktionspipeline. gl_Position = ftransform() wird dann also gebraucht, wenn in mehreren Durchgängen sowohl im Shader als auch in der festen Pipeline gerendert wird, um sicherzustellen das in beiden Fällen die gleiche Vertexposition herauskommt. &lt;br /&gt;
* genType faceforward (genType N, genType I, genType Nref)&lt;br /&gt;
: Gibt einen nach vorne zeigenden Vektor N zurück. (If dot(NRef, I) &amp;lt; 0 return N else return -N) &lt;br /&gt;
* genType reflect (genType I, genType N)&lt;br /&gt;
: Gibt den an der Flächenausrichtung N reflektierten Vektor I zurück. (=I-2 * dot(N,I) * N) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Matrixfunktionen==&lt;br /&gt;
* mat matrixCompMult (mat x, mat y)&lt;br /&gt;
: Multipliziert Matrix X mit Matrix Y komponentenweise. Um eine normale lineare Matrixmultiplikation durchzuführen, sollte der &amp;quot;*&amp;quot;-Operator genutzt werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Vektorvergleiche==&lt;br /&gt;
Die meisten Vektorvergleichsfunktionen liefern als Ergebnis einen boolvektor zurück, da die Vergleiche per Komponente stattfinden. Wenn man also x = vec4(1.0, 3.0, 0.0, 0.0) mit y = vec4(2.0, 1.5, 1.5, 0.0) via lessThan(x, y) vergleicht, erhält man als Ergebnis bvec(true, false, true, false).&lt;br /&gt;
&lt;br /&gt;
* bvec lessThan (vec x, vec y)&lt;br /&gt;
* bvec lessThan (ivec x, ivec y)&lt;br /&gt;
: Gibt den komponentenweisen Vergleich x &amp;lt; y zurück. &lt;br /&gt;
* bvec lessThanEqual (vec x, vec y)&lt;br /&gt;
* bvec lessThanEqual (ivec x, ivec y)&lt;br /&gt;
: Gibt den komponentenweisen Vergleich x &amp;lt;= y zurück. &lt;br /&gt;
* bvec greaterThan (vec x, vec y)&lt;br /&gt;
* bvec greaterThan (ivec x, ivec y)&lt;br /&gt;
: Gibt den komponentenweisen Vergleich x &amp;gt; y zurück. &lt;br /&gt;
* bvec greaterThanEqual (vec x, vec y)&lt;br /&gt;
* bvec greaterThanEqual (ivec x, ivec y)&lt;br /&gt;
: Gibt den komponentenweisen Vergleich x &amp;gt;= y zurück. &lt;br /&gt;
* bvec equal (vec x, vec y)&lt;br /&gt;
* bvec equal (ivec x, ivec y)&lt;br /&gt;
* bvec equal (bvec x, bvec y)&lt;br /&gt;
: Gibt den komponentenweisen Vergleich x == y zurück. &lt;br /&gt;
* bvec notEqual (vec x, vec y)&lt;br /&gt;
* bvec notEqual (ivec x, ivec y)&lt;br /&gt;
* bvec notEqual (bvec x, bvec y)&lt;br /&gt;
: Gibt den komponentenweisen Vergleich x != y zurück. &lt;br /&gt;
* bool any (bvec x)&lt;br /&gt;
: Liefert true zurück, wenn mindestens eine der Komponenten von x true ist.&lt;br /&gt;
* bool all (bvec x)&lt;br /&gt;
: Liefert true zurück, wenn alle Komponenten von x true sind. &lt;br /&gt;
* bvec not (bvec x)&lt;br /&gt;
: Liefert die logische Negation von x zurück. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Texturenzugriffe==&lt;br /&gt;
&lt;br /&gt;
Diese wichtige Funktionskategorie dient dazu, Werte aus einer an eine Textureinheit gebundenen Textur zu ermitteln. Die Texturenzugriffe können sowohl im Vertex (!) als auch im Fragment Shader ausgeführt werden, wobei der optionale Parameter bias im Vertex Shader ignoriert wird. Allerdings gibt es zusätzlich Funktionen die auf &amp;quot;Lod&amp;quot; enden und nur im Vertex Shader genutzt werden dürfen um eben dieses Manko zu umgehen. Funktionen mit dem Suffix &amp;quot;Proj&amp;quot; geben einen projizierten Texturenwert zurück.&lt;br /&gt;
&lt;br /&gt;
: '''1D-Texturen :'''&lt;br /&gt;
* vec4 texture1D (sampler1D sampler, float coord [, float bias])&lt;br /&gt;
* vec4 texture1DProj (sampler1D sampler, vec2 coord [, float bias])&lt;br /&gt;
* vec4 texture1DProj (sampler1D sampler, vec4 coord [, float bias])&lt;br /&gt;
: Nur im Vertex Shader :&lt;br /&gt;
* vec4 texture1DLod (sampler1D sampler, float coord, float lod)&lt;br /&gt;
* vec4 texture1DProjLod (sampler1D sampler, vec2 coord, float lod)&lt;br /&gt;
* vec4 texture1DProjLod (sampler1D sampler, vec4 coord, float lod)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: '''2D-Texturen :'''&lt;br /&gt;
* vec4 texture2D (sampler2D sampler, vec2 coord [, float bias])&lt;br /&gt;
* vec4 texture2DProj (sampler2D sampler, vec3 coord [, float bias])&lt;br /&gt;
* vec4 texture2DProj (sampler2D sampler, vec4 coord [, float bias])&lt;br /&gt;
: Nur im Vertex Shader : &lt;br /&gt;
* vec4 texture2DLod (sampler2D sampler, vec2 coord, float lod)&lt;br /&gt;
* vec4 texture2DProjLod (sampler2D sampler, vec3 coord, float lod)&lt;br /&gt;
* vec4 texture2DProjLod (sampler2D sampler, vec4 coord, float lod)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: '''3D-Texturen :'''&lt;br /&gt;
* vec4 texture3D (sampler3D sampler, vec3 coord [, float bias])&lt;br /&gt;
* vec4 texture3DProj (sampler3D sampler, vec4 coord [, float bias])&lt;br /&gt;
: Nur im Vertex Shader : &lt;br /&gt;
* vec4 texture3DLod (sampler3D sampler, vec3 coord, float lod)&lt;br /&gt;
* vec4 texture3DProjLod (sampler3D sampler, vec4 coord, float lod)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: '''Cubemap :'''&lt;br /&gt;
* vec4 textureCube (samplerCube sampler, vec3 coord [, float bias])&lt;br /&gt;
: Nur im Vertex Shader : &lt;br /&gt;
*vec4 textureCubeLod (samplerCube sampler, vec3 coord, float lod)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: '''Tiefentextur (Shadowmap) :'''&lt;br /&gt;
* vec4 shadow1D (sampler1DShadow sampler, vec3 coord [, float bias])&lt;br /&gt;
* vec4 shadow2D (sampler2DShadow sampler, vec3 coord [, float bias])&lt;br /&gt;
* vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord [, float bias])&lt;br /&gt;
* vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord [, float bias])&lt;br /&gt;
: Nur im Vertex Shader :&lt;br /&gt;
* vec4 shadow1DLod (sampler1DShadow sampler, vec3 coord, float lod)&lt;br /&gt;
* vec4 shadow2DLod (sampler2DShadow sampler, vec3 coord, float lod)&lt;br /&gt;
* vec4 shadow1DProjLod (sampler1DShadow sampler, vec4 coord, float lod)&lt;br /&gt;
* vec4 shadow2DProjLod (sampler2DShadow sampler, vec4 coord, float lod)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wie bereits eingangs gesagt ist dieses Kapitel ein sehr wichtiges, denn eine 3D-Szene ohne Texturen ist heute kaum denkbar. Darüber hinaus lassen sich durch Texturenzugriffe recht viele interessante Sachen machen, z.B. ein einfacher Blurfilter oder das freie überblenden bestimmter Texturenteile. Deshalb führe ich hier kurz ein paar Beispiele an, welche die Nutzung dieser Funktionen verdeutlichen sollen :&lt;br /&gt;
&lt;br /&gt;
===Beispiel A=== &lt;br /&gt;
Eine Textur gebunden die einfach ausgegeben werden soll&lt;br /&gt;
&lt;br /&gt;
''Im Vertex Shader'' :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
 gl_Position     = gl_ModelViewProjectionMatrix * gl_Vertex;&lt;br /&gt;
 gl_TexCoord[0]  = gl_MultiTexCoord0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
Der Vertex Shader ist recht minimal. Neben der homogenen Vertexposition leiten wir hier nur die im OpenGL-Programm angegebenen Texturkoordinaten weiter. ''Dies ist aber unbedingt nötig!'' Ohne die letzte Zeile hätten wir im Fragment Shader keine gültigen Texturkoordinaten auf TMU0, was in einer Fehldarstellung enden würde.&lt;br /&gt;
&lt;br /&gt;
''im Fragment Shader'' :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
uniform sampler2D texSampler;&lt;br /&gt;
&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
 gl_FragColor = texture2D(texSampler, vec2(gl_TexCoord[0]));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Zuerst deklarieren wir hier einen 2D-Texturensampler, wichtig : '''Texturensampler müssen IMMER als uniform deklariert werden!''' In der Hauptfunktion weisen wir dann einfach den über die Funktion texture2D aus unserer gebundenen Textur ausgelesenen Farbwert, anhand der vom Vertex Shader übergebenen Texturkoordinaten, zu.&lt;br /&gt;
&lt;br /&gt;
===Beispiel B=== &lt;br /&gt;
Zwei Texturen, jeweils auf TMU0 und TMU1. Fragmentfarbe soll eine Multiplikation der beiden Texturen darstellen.&lt;br /&gt;
&lt;br /&gt;
In diesem Beispielfall (der recht häufig vorkommt) müssen wir im Programm festlegen, ''welcher Sampler welche Textureinheit adressiert'', genau deshalb müssen die Texturensampler auch als uniform deklariert werden. Die Standardtextureneinheit eines Samplers ist TMU0, was in unserem Falle natürlich nicht brauchbar ist. Also müssen wir unserem zweiten Textursampler im Programm mitteilen das er seine Daten aus TMU1 beziehen soll :&lt;br /&gt;
&lt;br /&gt;
 glUniform1iARB(glSlang_GetUniLoc(ProgramObject, 'texSamplerTMU1'), 1);&lt;br /&gt;
&lt;br /&gt;
Dies ist also unbedingt zu machen, sobald ein Texturensampler eine Textureinheit &amp;gt; GL_TEXTURE_0 adressieren will. Die Textureneinheit des Samplers lässt sich also nicht im Shader selbst festlegen. Der Fragment Shader ist nun allerdings schnell hergeleitet (Vertex Shader verändert sich nicht, da TMU1 die Texturkoordinaten auch von TMU0 bezieht) :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
im Fragment Shader :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
uniform sampler2D texSamplerTMU0;&lt;br /&gt;
uniform sampler2D texSamplerTMU1;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
    gl_FragColor = texture2D(texSamplerTMU0, vec2(gl_TexCoord[0])) *&lt;br /&gt;
                   texture2D(texSamplerTMU1, vec2(gl_TexCoord[0]));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Noisefunktionen==&lt;br /&gt;
Sowohl im Vertex als auch im Fragment Shader lassen sich [[GLSL noise|Noisefunktionen]] nutzen, mit deren Hilfe sich eine gewisse &amp;quot;Zufälligkeit&amp;quot; simulieren lässt (wirklich zufällige Werte sind es natürlich nicht). Ein zurückgegebener Wert liegt dabei immer im Bereich [-1..1] und ist immer bei gleichem Eigabewert auch immer gleich. Die Verwendung empfiehlt sich derzeit allerdings eher nicht, da nicht alle aktuellen Treiber die Funktionen unterstützen und eine Noisetextur wahrscheinlich performanter ist.&lt;br /&gt;
&lt;br /&gt;
* float noise1 (genType x)&lt;br /&gt;
* vec2 noise2 (genType x)&lt;br /&gt;
* vec3 noise3 (genType x)&lt;br /&gt;
* vec4 noise4 (genType x)&lt;br /&gt;
&lt;br /&gt;
==Discard==&lt;br /&gt;
Eigentlich keine Funktion, sondern eine Abbruchbedingung '''nur im Fragment Shader'''. Das Schlüsselwort {{INLINE_CODE|discard}} verwirft das aktuell bearbeitete Fragment und beendet gleichzeitig den Shader. Es kann z.B. genutzt werden um Alphamasking manuell durchzuführen.&lt;br /&gt;
Man sollte dabei jedoch beachten dass ein Großteil der aktuellen Hardware kein &amp;quot;early-out&amp;quot; (frühes Beenden) im Fragmentshader unterstützt. Wenn dort also ein {{INLINE_CODE|discard}} auftaucht, wird trotzdem auch der Code danach ausgeführt und einfach verworfen. Einen Geschwindigkeitsvorteil durch diesen Befehl wird man also erst auf neueren Karten feststellen, die dieses Faeature auch so unterstützen wie es angedacht war. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Beispielshader=&lt;br /&gt;
Wen bis hierhin nicht der Mut verlassen hat, und wer aufmerksam gelesen hat, dürfte jetzt also zumindest in der Lage sein kleinere Shader in glSlang zu schreiben und diese auch im Programm zu nutzen. Ich habe im Themenbereich &amp;quot;glSlang&amp;quot; versucht alle Bereiche der Shadersprache selbst anzusprechen und hoffe das auch brauchbar rübergebracht zu haben. Um oben erlerntes (hoffe ich doch mal) nochmal zu vertiefen werde ich jetzt (wie ich das bereits bei meinem ARB_VP-Tutorial getan habe) einen simplen Beispielshader (Vertex und Fragment Shader) auseinanderpflücken um so u.a. auch die Programmstruktur für alle die in C nicht so bewandert sind zu erörtern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Der Vertex Shader==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
uniform vec4 GlobalColor;&lt;br /&gt;
&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
 gl_Position     = gl_ModelViewProjectionMatrix * gl_Vertex;&lt;br /&gt;
 gl_FrontColor   = gl_Color * GlobalColor;&lt;br /&gt;
 gl_TexCoord[0]  = gl_MultiTexCoord0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie gesagt recht simpel. Angefangen wird mit der Deklaration einer globalen Uniformvariable namens {{INLINE_CODE|GlobalColor}}. Wie wir uns erinnern gibt der Typenqualifizierer uniform an, das wir den Wert dieser Variable (ein 4-Komponentenvektor, da Farbwerte aus R,G,B und A bestehen) in unserem Programm an den Shader übermitteln.&lt;br /&gt;
&lt;br /&gt;
Danach gehts ohne Umwege direkt in unsere Hauptfunktion, da wir im Vertex Shader keine anderen Funktionen benötigen. Dort berechnen wir zuerst die homogene Position unseres Vertex, die sich aus der eingehenden Vertexposition multipliziert mit der Modelansichtsmatrix ergibt. Wie schonmal gesagt '''muss diesem Wert etwas zugewiesen werden''', da sonst alle darauf aufbauenden Funktionen unvorhersehbare Ergebnisse liefern.&lt;br /&gt;
Ausserdem wollen wir die Frontfarbe unseres Vertex jedesmal mit der im Programm übergebenen GlobalColor multiplizieren, so dass wir den Farbwert der gesamten Szene aus unserem Programm heraus manipulieren können. Zu guterletzt geben wir dann noch unsere aus der festen Funktionspipeline erhaltenen Texturkoordinaten auf Textureinheit 0 weiter. Wenn im Fragmentshader Texturkoordinaten verwendet werden, '''muss das getan werden'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Der Fragment Shader==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;glsl&amp;quot;&amp;gt;&lt;br /&gt;
uniform sampler2D Texture0;&lt;br /&gt;
uniform sampler2D Texture1;&lt;br /&gt;
uniform sampler2D Texture2;&lt;br /&gt;
uniform sampler2D Texture3;&lt;br /&gt;
&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
 vec2 TexCoord = vec2( gl_TexCoord[0] );&lt;br /&gt;
 vec4 RGB      = texture2D( Texture0, TexCoord );&lt;br /&gt;
&lt;br /&gt;
 gl_FragColor  = texture2D(Texture1, TexCoord) * RGB.r +&lt;br /&gt;
                 texture2D(Texture2, TexCoord) * RGB.g +&lt;br /&gt;
                 texture2D(Texture3, TexCoord) * RGB.b;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auch hier passiert nicht wirklich viel Großartiges. Wir deklarieren beim Shaderanfang zuerst vier Texturensampler, da wir insgesamt vier verschiedene Texturen im Shader auslesen wollen, eine Verlaufstextur und drei Oberflächentexturen. Auch hier sei wieder gesagt das man Sampler '''immer als uniform deklarieren muss'''. In der Hauptfunktion deklarieren wir dann einen Farbvektor, der auch direkt einen Farbwert aus Textureinheit 0 zugewiesen bekommt. Auf Textureinheit 0 haben wir ihm Hauptprogramm eine Verlaufstextur gebunden, die angibt wie die drei folgenden Texturen ineinander geblendet werden.&lt;br /&gt;
Danach schreiben wir dann den Farbwert des Fragmentes, der '''im Fragment Shader ausgegeben werden muss'''. Der besteht wie einfach zu erkennen aus Farbwert von Textureinheit 1 * Rotwert von Textureinheit 0 + Farbwert von Textureinheit 2 * Grünwert von Textureinheit 0 + Farbwert von Textureinheit 3 * Blauwert von Textureinheit 0. So ist z.B. an Stellen an denen in der Verlaufstextur reines blau liegt nur die dritte Textur sichtbar.&lt;br /&gt;
&lt;br /&gt;
So viel also zu unserem kleinen Beispielshader. Er ist weder besonders toll noch besonders sinnvoll, sollte aber auch eher dazu dienen euch glSlang ein wenig zu veranschaulichen, was mir hoffentlich gelungen ist.&lt;br /&gt;
&lt;br /&gt;
Wenn ihr in den vorangegangenen Kapiteln zumindest ein wenig aufgepasst habt, dann könnt ihr euch vor eurem inneren Auge hoffentlich vortstellen was der Shader macht : Er blendet drei Texturen weich anhand der Verlaufstextur ineinander über. Sowas kann man z.B. für ein Terrain nutzen, um dieses anhand einer Farbtextur zu texturieren. Für alle, die damit Probleme haben hier zwei Bilder die den Shader veranschaulichen. Links die Verlaufstextur, die angibt wo welche Textur wie stark gewichtet wird und rechts dann das Ergebnis :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt; [[BILD:GLSL_sample_shader_a.jpg]] [[BILD:GLSL_sample_shader_b.jpg]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Post Mortem=&lt;br /&gt;
Das wars also, meine &amp;quot;Einführung&amp;quot; in die OpenGL Shader Sprache. Ich hoffe es hat euch nicht gelangweilt und auch die von mir zur Verfügung gestellten Informationen haben euch hoffentlich ausgereicht. Mit der Veröffentlichung dieser Einführung geht übrigens auch die Eröffnung eines Shaderforums hier auf der DGL einher, in der ihr dann also fleissig Fragen zum Thema stellen oder eure Shader präsentieren könnt. In diesem Post Mortem gehe ich jetzt noch kurz auf die Zukunft von glSlang ein und zeige ein paar Screenshots (damit die Augen entspannen können), bevor ihr euch dann selbst in die Shaderwelt stürzen könnt. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Beispiele=&lt;br /&gt;
&lt;br /&gt;
Anbei ein paar exemplarische Screenshots. Da man mit GLSL aber alle möglichen Effekte berechnen kann (u.a. auch 1:1 die feste Funktionspipeline) ist es hier unmöglich einen Überblick aller möglichen Techniken zu geben.&lt;br /&gt;
&lt;br /&gt;
[[Datei:tut_glsl_eigenershader_01.png]] [[Datei:tut_glsl_eigenershader_02.png]] [[Datei:tut_glsl_eigenershader_03.png]]&lt;br /&gt;
&lt;br /&gt;
Wie im ersten (und dritten) Screenshot zu sehen ist es natürlich auch möglich mehrere Techniken innerhalb einer Szene zu nutzen. Hier sind letztendlich bis auf Hardwarelimitationen keine Grenzen gesetzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Die Zukunft=&lt;br /&gt;
Als dieses Tutorial geschrieben wurde, war noch nicht ganz abzusehen dass bzw. ob sich GLSL auch durchsetzen würde. ARB-Shadr und NVidias cG waren damals die Platzhirsche, aber inzwischen werden ARB-Shader nicht mehr genutzt (und auch schon länger nicht mehr weiterentwickelt) und auch NVidia setzt primär auf GLSL. GLSL wird permanent weiterenwtickelt und Hersteller können dank des flexiblen Extensionsystems auch in GLSL eigene Extensions offenlegen um die aktuellsten Features (wie z.b. den Tesselator auf aktuellen ATI-Karten) nutzen zu können. GLSL it als inzwischen auch offizielle die Shadersprache frü OpenGL und wird permanent an die neusten technischen Entwicklungen im Grafikkartenbereich angepasst.&lt;br /&gt;
&lt;br /&gt;
Wer also unter OpenGL etwas mit Shadern machen möchte, kommt an GLSL nicht vorbei!&lt;br /&gt;
&lt;br /&gt;
Also viel Spaß beim Experimentieren und Shaderschreiben! Und nicht vergessen : Wir wollen sehen was ihr so treibt,&lt;br /&gt;
&lt;br /&gt;
Euer&lt;br /&gt;
:Sascha Willems&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{TUTORIAL_NAVIGATION|-|[[Tutorial_glsl2]]}}&lt;br /&gt;
[[Kategorie:Tutorial|GLSL]]&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Link&amp;diff=25340</id>
		<title>Link</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Link&amp;diff=25340"/>
				<updated>2011-08-13T17:58:53Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: /* Texturen */ Ticks und Crosses&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
!!!!!!!! NUTZT DIESE TABELLE ALS VORLAGE FÜR WEITERE LINKTABELLEN !!!!!!!&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[Link]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[Link]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Linksammlung soll allgemeine Links zu unterschiedlichen Themen bieten, die mit der Multimediaentwicklung zu tun haben.&lt;br /&gt;
{{Hinweis|Vielleicht ist eine Zusammenführung mit [[Tool]] sinnvoll!}}&lt;br /&gt;
{{Hinweis|Vielleicht ist eine Aufteilung in Unterseiten sinnvoll (möglicherweise mit Kategorien)}}&lt;br /&gt;
&lt;br /&gt;
= Entwicklung mit OpenGL =&lt;br /&gt;
&lt;br /&gt;
== Hardwareinfos ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://delphi3d.net/hardware/listreports.php OpenGL Hardware Registry - Hardwareübersicht]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Datenbank aller Grafikkarten die in der Harware Registry vorhanden sind. Die einzelnen Artikel enthalten Infos darüber, welche Extensions von der Grafikkarte unterstützt werden.&lt;br /&gt;
|-&lt;br /&gt;
|[http://delphi3d.net/hardware/allexts.php OpenGL Hardware Registry - Extensionübersicht]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Datenbank aller Extensions die in der Harware Registry vorhanden sind. Die einzelnen Artikel enthalten Infos darüber, welche Grafikkarten die entsprechende Extension unterstützen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
||[[Tutorial|DGL Wiki - Tutorial]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|DelphiGL.com ist Betreiber dieses Wikis und stellt eine Vielzahl Tutorials mit Schwehrpunkt OpenGL zur Verfügung. &lt;br /&gt;
Neben Tutorials für Einsteiger und OpenGL Anfänger gibt es auch fortgeschrittene Themen wie Shader oder Partikelsysteme.Sprache der Wahl ist hier Delphi.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.joachimrohde.com/cms/xoops/modules/articles/index.php?cat_id=1 joachimrohde.com]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet ihr deutsche Übersetzungen der bekannten NeHe Tutorials. Sprache der Wahl ist hier C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.cg.tuwien.ac.at/studentwork/VRSem96/OpenGL/ Technische Universität Wien]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[http://nehe.gamedev.net/ Nehe] &lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die berühmt berüchtigten NeHe Tutorials sind eine umfangreiche Sammlung an Tutorials zum Thema OpenGL. Von Anfängertutorials bis hin zu komplexen Effekten wird alles behandelt. Sprache der Wahl ist hier C++. (Eine Übersetzung der NeHe Tutorials findet ihr bei Joachim Rhode (siehe oben). )&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.sulaco.co.za/tut.htm sulaco.co.za] &lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| OpenGL Beispiele in Delphi&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenGL Funktionen ==&lt;br /&gt;
&lt;br /&gt;
=== GL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GL|DGL Wiki - Kategorie GL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten OpenGL Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL.tar.gz OpenGL.org - Orginal Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die Orginalspezifikationen der OpenGL 1.0 und OpenGL 1.1 Befehle. (Diese HTML-Dokumente sind nicht Copy&amp;amp;Paste freundlich, da sie vermutlich automatisch aus vorhandenen Dateien (Postscript) erzeugt wurden.)&lt;br /&gt;
|-&lt;br /&gt;
|[http://developer.3dlabs.com/documents/glmanpage_index.htm 3dLabs]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die Orginalspezifikationen der OpenGL 1.0 und OpenGL 1.1 Befehle.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von Englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glfunc01_4f03.asp MSDN von Microsoft]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|OpenGL Dokumentation in der MSDN. Die Erklärung der MSDN sind meist keine reinen Kopien der Orginalspezifikationen, sondern enthalten hin und wieder auch zusätzliche Informationen, oder formulieren Texte auf verständlichere Art und Weise.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLU ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GLU|DGL Wiki - Kategorie GLU]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten GLU Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glu/ OpenGL.org - Orginal Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Orginalspezifikationen für die GLU Befehle. (Diese HTML-Dokumente sind nicht Copy&amp;amp;Paste freundlich, da sie vermutlich automatisch aus vorhandenen Dateien (Postscript) erzeugt wurden.)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glufnc01_0e43.asp MSDN von Microsoft]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|GLU Dokumentation in der MSDN. Die Erklärung der MSDN sind meist keine reinen Kopien der Orginalspezifikationen, sondern enthalten hin und wieder auch zusätzliche Informationen, oder formulieren Texte auf verständlichere Art und Weise.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLX ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GLX|DGL Wiki - Kategorie GLX]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten GLX Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glx/ OpenGL.org - Orginal  Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Orgninalspezifikationen der GLX Befehle bei OpenGL.org.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von Englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== WGL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:WGL|DGL Wiki - Kategorie WGL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Wiki-Kategorie die alle übersetzten WGL Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://developer.3dlabs.com/documents/wglmanpage_index.htm 3dLabs]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung einiger WGL Befehlsspezifikationen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLUT ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://freeglut.sourceforge.net/docs/api.php The freeglut Projekt]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Englischsprachige Dokumentation zum OpenGL Utility Toolkit kurz GLUT.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SDL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:SDL|DGL Wiki - Kategorie SDL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Übersicht aller auf die SDL bezogenen Artikel hier im Wiki. Darunter befinden sich eine Vielzahl von Übersetzungen der SDL Befehlspezifikationen. Diese können auch in der [[SDL-Funktionsübersicht]] gefunden werden.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.libsdl.org/cgi/docwiki.cgi/SDL_20API libsdl.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Das Dokumentationswiki von libSDL.org enthält die komplette Dokumenation zur SDL in englischer Sprache.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.fp.sdl.de.vu/ fp.sdl.de.vu]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Eine Webseite die speziell Informationen über die Programmierung von SDL unter Freepascal zur Verfügung stellt.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== FAQs ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[FAQ| DGL Wiki - FAQ]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein FAQ (Frequently Asked Questions = Häufig gestellte Fragen) zu DelphiGL.com und dem DGL Wiki.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dsource.de/faq/index.htm 3dsource.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein FAQ zu Fragen rund um OpenGL.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Effekte und Techniken mit OpenGL ==&lt;br /&gt;
&lt;br /&gt;
===Glow===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamasutra.com/view/feature/2107/realtime_glow.php Gamasutra]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt, wie man mit Hilfe von Shader(hier DirectX Shader) den Gloweffekt in Realtime umsetzt. Dabei wird erst die Technik dahinter erklährt, und dann wie man sie Schritt für Schritt umsetzt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://collective.valve-erc.com/index.php?go=tron1 valve-erc.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Schritt für Schritt Anleitung, wie man mit Hilfe von Cg in OpenGL den Glow Effekt realisieren kann &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===HDR===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/columns/hardcore/hdrrendering/ gamedev.net]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Hier wird sehr kurz eingeleitet, was HDR Rendering überhaupt ist, dann wird der Aufbau des *.hdr Formats erläutert, und dann geht es schon von 0 auf 100 zum Programmieren. Erklährungen gibt es kaum, dafür werden fertige Shader(für DirectX) geboten. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/reference/articles/article2208.asp gamedev.net]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt auch nur etwas kurz das HDR Verfahren, jedoch mit mehr mathematischen Hintergrund in Sachen Tonemapping. Beispielcode für Tonemapping in C++ liegt bei. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===BSP Bäume===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dtechdev.com/tutorials/leafbsp/3dbsptrees.html 3dtechdev.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Das beste Dokument überhaupt, für allem die selber BSP Bäume compilieren möchte. Ist belegt mit sehr viel Grafik. Erst beginnt er das Prinzip allgemein zum umschreiben, dann wird alles genau erläutert, und mit verständlichen Pseudocode untermalt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dtechdev.com/tutorials/illegalgeometry/illegalgeometrytut.html 3dtechdev.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Nicht ganz so gut geworden, wie sein erstes Tutorial, aber erklährt auch sehr gut, wie man illegale Geometrie aufspürt und beseitigt. Wieder mit Grafiken und Pseudocodes verständlich belegt. Hiermit kann man seinem Map-Compiler den letzten Schliff verleien. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/reference/articles/article981.asp Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Von Michael Abrash, dürfte der ''Erfinder'' von Quake sein. Naja, meine Englischkenntnisse reichen hier nicht ganz aus, um den Text zu verstehen. Ist etwas umständlich geschrieben. Dafür mit Grafiken unterlegt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.zfx-online.de/Tutorials.php?ID=11 Part 1 - Allgemein]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Einzigste deutsche Referenz zu BSP Bäumen, dafür Daumen hoch. Ist aber nicht das Wahre: schlechter C Code, und ich hatte auch nicht den Einduck, das er die Theorie zu diesem Thema bis in die Tiefe verstanden hat(oder er wollte es nicht zu akademisch Erklähren oO). Aber ein guter Einstieg in dieses Thema. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.zfx-online.de/Tutorials.php?ID=13 Part 2 - Kollision und PVS]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.cs.uwec.edu/~stevende/cs455/programs/GameTutorials%20-%20Quake%203%20BSP%20Format.htm Quake3 *.bsp Format]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die beste Dokumentation für das BSP Format, die ich gefunden habe, besser als den Quake3 Sourcecode zu durchforsten. Leider etwas magere Eklährung zu wichtigen Themen wie Patches(Curved Surfaces). Ich pers. hatte jetzt 1 1/2 Wochen gebraucht, um das *.bsp Format vollständig zu verstehen. Ist aber anscheinend die beste Format Dokumentation im Netz. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_q2bsp.shtml Quake2 *.bsp Format]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Kann auch nur soviel sagen, wie beim Link zuvor. Es fehlen hier auch zum Teil Informationen. Man muss halt viel ausprobieren, und sich den Quake 2 Source zu Herzen nehmen, damit man es versteht. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Himmel &amp;amp; Wolken===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/community/forums/topic.asp?topic_id=86024 Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Guter Thread mit vielen Anregungen und Links. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/community/forums/topic.asp?topic_id=135654 Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Hier wird die Diskussion zum obigen Link weitergeführt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://freespace.virgin.net/hugo.elias/models/m_clouds.htm Plasma]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine nette Idee um Plasma in Echtzeit zu generieren, und zu verändern. Leider nichts zum Shading. &lt;br /&gt;
|-&lt;br /&gt;
|[http://nis-lab.is.s.u-tokyo.ac.jp/~nis/cdrom/sig00_cloud.pdf 3D Wolken]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Paper über generieren und rendern von 3 dimensionalen Wolken inklusive Schatten und Lichtstrahlen. Ich hab nur den Lichtstahlen-Algorithmus ausprobiert. Saulangsam aber sehr einfach zu implementieren. Einen Blick ist es auf jeden Fall wert. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.geocities.com/ngdash/whitepapers/skydomecolor.html Skydome]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Wenn man mal schnell gute Farben für seinen Skydome braucht... &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Terrain===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_geomipmaps.shtml FlipCode]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Artikel zu Geomipmaping. Zummindest hab ich es hier zum ersten mal gesehen. Und es funzt ganz gut. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.vterrain.org Virtual Terrain Project]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Seite mit Links und Artikeln zu allem, was etwas mit Terrainrendering zu tun hat.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sonstiges===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[Materialsammlung]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Sammlung von gängigen Parametern für [[glMaterial]] hier im Wiki.&lt;br /&gt;
|-&lt;br /&gt;
|[http://freespace.virgin.net/hugo.elias/radiosity/radiosity.htm Radiosity]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Erklährt sehr schön die Funktionsweise von Radiosity, liefert Beispielcodes und ist recht gut illustriert.&lt;br /&gt;
|-&lt;br /&gt;
|[http://legion.gibbering.net/projectx/paper/shadow%20mapping/ Shadowmapping]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt das Trapezoidal Shadow Mapping - Verfahren für gerichte Lichter.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_generatingnames.shtml Namensgenerator]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Per Zufallsgenrator Namen erzeugen, und nie wieder kreativ werden müssen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.paulsprojects.net/tutorials/simplebump/simplebump.html Bumpmapping]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Bumpmapping auf Lowend-Grakas. Damals war Bumpmapping noch was ganz tolles... &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.paulsprojects.net/opengl/dpreflect/dpreflect.html Dot Product Reflect]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|zwar nur ne Demo, aber wenn man schon immer mal mit EMBM das Wasser aus Morrowind nachproggen wollte... &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Beispiele/Demos mit Quelltext ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.delphigl.de DelphiGL.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier finden sich besonders eindrucksvolle Newton Physik Demos. Meißtens sogar mit Quelltext.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.shadow3d.de.vu/ Shadow 3D]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier finden sich zwei Demos wie man Quake 3 Modelle lädt und eine glSlang Demo&lt;br /&gt;
|-&lt;br /&gt;
|[[Shadersammlung]] im DGL Wiki&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier findet man freie Shadersourcen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.humus.name Humus]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Diverse eindrucksvolle Demos zu verschiedenen Techniken, häufig mit Quelltext in C (teilweise OpenGL / DirectX)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== weitere Links ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www-user.tu-chemnitz.de/~pester/Lehre/CompGeo.pdf CompGeo.pdf]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Script &amp;quot;Einführung in die Computergeometrie&amp;quot; von Dr. Pester (TU-Chemnitz). Ideales Nachschlagewerk für die Mathematik die einem bei der Grafikprogrammierung so begegnet.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.robsite.de/ robsite.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Auf dieser riesigen Seite finden sich auch viele weitere Links über verschiedene Themen der 3D Programmierung.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dlinks.com/links.cfm?categoryid=3&amp;amp;subcategoryid=21 3dlinks.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Diese Seite hat es sich zur Hauptaufgabe gemacht Links auf Seiten mit dem Thema 3D zu sammeln.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.two-kings.de/links.html two-kings.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Sammlung diverser interessanter Links, vorallem auf Themen im gamedev-Forum verweisend.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.delgine.com Delgine.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Heimat des freien 3D Modellers &amp;quot;DeleD&amp;quot;, welcher in Delphi programmiert ist. Ihr findet dort auch Modellpackete, Texturpackete, Plugins und Hilfe bei der Programmierung von Delphi und OpenGL.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Spieleentwicklung =&lt;br /&gt;
&lt;br /&gt;
==Allgemein==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.spieleprogrammierung.net/ Spieleprogrammierung - OpenGL - GLSL - OpenAL - KI - Animation - Spielephysik]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr Artikel, Tutorials und Programmbeispiele rund um das Thema Spieleprogrammierung. Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://graphics-and-physics-framework.spieleprogrammierung.net/ OpenGL Graphics And Physics Framework]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr ein frei verfügbares OpenGL basiertes Grafik und Physik Framework (LGPL-Lizenz) samt zugehöriger Probammbeispiele. Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://audio-framework.spieleprogrammierung.net/ OpenAL Audio Framework]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr ein frei verfügbares OpenAL Audio Framework (LGPL-Lizenz) samt zugehöriger Probammbeispiele. Unterstützt werden 3D Sounds, EFX (EAX Alternative) Reverb Effekte sowie Audio Streaming (Music and Voices). Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://spieleentwicklung-im-web.spieleprogrammierung.net/ Spieleentwicklung im Web]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr Links (E-Books, Präsentationen, wissenschaftliche Arbeiten und Tutorials) zu verschiedenen Themengebieten der Spieleentwicklung.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Kopierschutz==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://inner-smile.com/nocrack.phtml Inner-Smile.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Seite mit Gedanken zum Thema &amp;quot;Wie schütze ich meine Programme vor Crackern&amp;quot;. Falls die Seite nicht erreichbar ist hat Google noch ne [http://www.google.com/search?q=cache:hpqPT5G4WB0J:www.inner-smile.com/nocrack.phtml+http://inner-smile.com/nocrack.phtml&amp;amp;hl=de&amp;amp;gl=de&amp;amp;ct=clnk&amp;amp;cd=1 Version im Archiv].&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Künstliche Intelligenz ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.kbs.uni-hannover.de/Lehre/KI2/Presentationen/presentation9798/esprit/spieltheorie/spieltheorie.html Uni-Hannover - Spieltheorie]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Artikel über die Grundlagen von KI in Spielen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.robsite.de/tutorials.php?tut=ki Robsite KI-Tutorials]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Sammlung von Texten zum Thema KI in Spielen. Beispiele sind meist in C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://ai-depot.com/ AI-Depot.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Seite die sich ausschließlich mit KI in Spielen beschäftigt.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ai-junkie.com/links.html AI-Junkie.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Linkseite mit vielen KI relevanten Links. Die Seite AI-Junie selbst behandelt auch viele Themen rund um KI.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.aiwisdom.com/ AIWisdom.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Seite die sich mit KIs in Spielen beschäftigt und sich zum Ziel gesetzt hat, alle Artikel zum Thema zu finden und zu Katalogisieren. Es gibt hier auch Artikel über die KIs bestehender Spiele.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.aiguru.com/ AIGuru.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Newsseite zum Thema KI, Künstliches Leben, Hiernforschung, Robotik, Nanotechnologie - Halt alles was Spass macht.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.generation5.org/ Generation5.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Seite über KI, Robotik, etc. . Leider scheint die Seite Probleme zu haben regelmäßig aktualisiert zu werden. Aber zumindest sollte man einige Artikel finden. Die werden ja nicht schlecht.&lt;br /&gt;
|-&lt;br /&gt;
|www.gameai.com&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|''Wurde Januar 2010 als down gemeldet. Weiss irgendwer etwas genaueres?'' Seite zum Thema KI in Spielen. Soll wohl einen gewissen Stellenwert in der AI-Szene haben.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www-i1.informatik.rwth-aachen.de/~algorithmus/algo19.php Algorithmus der Woche - Informatikjahr 2006]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Vielleicht schon etwas älter aber doch eine gute Anleitung um eine einfache Schach-KI zu erstellen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Ressourcen =&lt;br /&gt;
In dieser Gruppe finden sich Links um die Ressourcen für Eure Projekte zu erstellen.&lt;br /&gt;
&lt;br /&gt;
== Texturen / 2D-Grafiken ==&lt;br /&gt;
&lt;br /&gt;
=== Texturen ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;|Genre&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;|Lizenz&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|GPL&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|MPL&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|OSS&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|CSS&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Komm.&lt;br /&gt;
!width=&amp;quot;35%&amp;quot;|Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.davegh.com/vg/home.htm]&lt;br /&gt;
|Fantasy&lt;br /&gt;
|[http://www.davegh.com/vg/termsandconditions.htm Eigene]&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|Die Lizenz vererbt sich in die Projekte hinein.&lt;br /&gt;
|-&lt;br /&gt;
|url&lt;br /&gt;
|Futuristisch, Mittelalter, etc.&lt;br /&gt;
|CC-BY-SA, etc., gerne auch mit Direktlink auf die Lizenzseite, so vorhanden.&lt;br /&gt;
|✔/✘/?&lt;br /&gt;
|✔/✘/?&lt;br /&gt;
|✔/✘/?&lt;br /&gt;
|✔/✘/?&lt;br /&gt;
|✔/✘/?&lt;br /&gt;
|Alle Bilder sind von Käse&lt;br /&gt;
|}&lt;br /&gt;
'''Legende:'''&lt;br /&gt;
:'''Kostenpflichtige Seiten''' sind mit einem * zu '''kennzeichnen'''&lt;br /&gt;
:GPL: Kompatibel mit der GPL&lt;br /&gt;
:MPL: Kompatibel mit der MPL&lt;br /&gt;
:OSS: Verwendung in OpenSource Software nicht verboten&lt;br /&gt;
:CSS: Verwendung in ClosedSource Software nicht verboten&lt;br /&gt;
:Komm: Verwendung in kommerzieller Software nicht verboten&lt;br /&gt;
&lt;br /&gt;
=== Texturerstellung ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://3d.diehlsworld.de/textures/index.htm 3d.diehlsworld.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet ihr kurze aber inhaltlich reiche Tutorials zu der Frage &amp;quot;Wie erstelle ich XXXXX-Texturen&amp;quot;. Dabei reicht die Palette von Untergrundtexturen wie Gras, Sand , Fels und Wasser (und Kombinationen dieser) bis hin zu Blitzen und Partikeln. Als Programm wird hier Photoshop verwendet.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gimps.de/gimp/textur-muster/ gimps.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Schritt für Schritt Anleitungen wie man mit Gimp verschiedene Texturen erstellt.&lt;br /&gt;
|-&lt;br /&gt;
|[http://cbt.k090999.de/gimp.php#texturen k090999.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Gimptutorials zum Erstellen verschiedene Texturen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Modelle / 3D-Grafiken ==&lt;br /&gt;
&lt;br /&gt;
=== Blender ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://blendpolis.de/f/viewtopic.php?t=5786 Blendpolis]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Ein Thread im Forum von [http://blendpolis.de Blendpolis] in dem '''sehr''' viele Tutorials aufgelistet sind&lt;br /&gt;
|-&lt;br /&gt;
|[http://blendpolis.de/f/article_cat.php?fldAuto=7 Blendpolis]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Eigentliche Tutorial Seite von [http://blendpolis.de Blendpolis] die Auswahl ist hier aber nicht so groß&lt;br /&gt;
|-&lt;br /&gt;
|[http://wikivid.com/index.php/Blender Blender at wikivid.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Linksammlung von Blender Video Tutorials&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.blender.org/education-help/tutorials/getting-started/ blender3d.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Auch die Heimatseite von Blender bietet viele Tutorials unter anderm auch Video Tuorials&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.Blenderunderground.com Blenderunderground]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| '''sehr gute''' Video-Tutorials&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sounds ==&lt;br /&gt;
&lt;br /&gt;
===Musik===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.jamendo.com/ Jamendo.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Viele Künstler stellen hier ihre Alben unter einer Creative Commons Lizenz online. Man kann dort die Künstler auch kontaktieren und fragen ob man ihre Musik nutzen kann. Taugt außerdem als Radio! ;)&lt;br /&gt;
|-&lt;br /&gt;
|[http://incompetech.com/m/c/royalty-free/ Incompetech.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Viele sehr schön gemacht instrumentale Musik aus allen möglichen Genres. Sie ist frei verwenderbar, wenn man den Macher der Musik (Kevin MacLeod) in seinem Programm erwähnt. Aber das hat er auch verdient. Folgende Programme nutzen beispielsweise (auch) Musik von incompetech.com:&lt;br /&gt;
* OpenParty&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Soundeffekte===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.freesound.org/ freesound.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Diverse Sounds unter [http://www.creativecommons.org/ CreativeCommons] Lizenzen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Soundprogramme===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://audacity.sourceforge.net/?lang=de Sourceforgeseite von Audacity]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein einfaches, freies Programm um Sounddateien zu bearbeiten. Man kann es auch nutzen um Soundeffekte neu zu erstellen, indem man z.B. ein Geräusch mit dem Mikrofon aufnimmt und einige Effekt anwendet, um es passender und nicht mehr aufgenommen klingen zu lassen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://lmms.sourceforge.net/ LMMS]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|LMMS (Linux MultiMedia Studio) ist ein OpenSource+Freeware Composer-Programm ähnlich zum bekannteren aber auch teuren CuBase(r). Trotz des Namens auch für Windows erhältlich.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Link&amp;diff=25339</id>
		<title>Link</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Link&amp;diff=25339"/>
				<updated>2011-08-13T17:57:25Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: /* Texturen */ davegh hinzugefügt.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
!!!!!!!! NUTZT DIESE TABELLE ALS VORLAGE FÜR WEITERE LINKTABELLEN !!!!!!!&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[Link]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[Link]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Linksammlung soll allgemeine Links zu unterschiedlichen Themen bieten, die mit der Multimediaentwicklung zu tun haben.&lt;br /&gt;
{{Hinweis|Vielleicht ist eine Zusammenführung mit [[Tool]] sinnvoll!}}&lt;br /&gt;
{{Hinweis|Vielleicht ist eine Aufteilung in Unterseiten sinnvoll (möglicherweise mit Kategorien)}}&lt;br /&gt;
&lt;br /&gt;
= Entwicklung mit OpenGL =&lt;br /&gt;
&lt;br /&gt;
== Hardwareinfos ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://delphi3d.net/hardware/listreports.php OpenGL Hardware Registry - Hardwareübersicht]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Datenbank aller Grafikkarten die in der Harware Registry vorhanden sind. Die einzelnen Artikel enthalten Infos darüber, welche Extensions von der Grafikkarte unterstützt werden.&lt;br /&gt;
|-&lt;br /&gt;
|[http://delphi3d.net/hardware/allexts.php OpenGL Hardware Registry - Extensionübersicht]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Datenbank aller Extensions die in der Harware Registry vorhanden sind. Die einzelnen Artikel enthalten Infos darüber, welche Grafikkarten die entsprechende Extension unterstützen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
||[[Tutorial|DGL Wiki - Tutorial]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|DelphiGL.com ist Betreiber dieses Wikis und stellt eine Vielzahl Tutorials mit Schwehrpunkt OpenGL zur Verfügung. &lt;br /&gt;
Neben Tutorials für Einsteiger und OpenGL Anfänger gibt es auch fortgeschrittene Themen wie Shader oder Partikelsysteme.Sprache der Wahl ist hier Delphi.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.joachimrohde.com/cms/xoops/modules/articles/index.php?cat_id=1 joachimrohde.com]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet ihr deutsche Übersetzungen der bekannten NeHe Tutorials. Sprache der Wahl ist hier C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.cg.tuwien.ac.at/studentwork/VRSem96/OpenGL/ Technische Universität Wien]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[http://nehe.gamedev.net/ Nehe] &lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die berühmt berüchtigten NeHe Tutorials sind eine umfangreiche Sammlung an Tutorials zum Thema OpenGL. Von Anfängertutorials bis hin zu komplexen Effekten wird alles behandelt. Sprache der Wahl ist hier C++. (Eine Übersetzung der NeHe Tutorials findet ihr bei Joachim Rhode (siehe oben). )&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.sulaco.co.za/tut.htm sulaco.co.za] &lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| OpenGL Beispiele in Delphi&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenGL Funktionen ==&lt;br /&gt;
&lt;br /&gt;
=== GL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GL|DGL Wiki - Kategorie GL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten OpenGL Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL.tar.gz OpenGL.org - Orginal Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die Orginalspezifikationen der OpenGL 1.0 und OpenGL 1.1 Befehle. (Diese HTML-Dokumente sind nicht Copy&amp;amp;Paste freundlich, da sie vermutlich automatisch aus vorhandenen Dateien (Postscript) erzeugt wurden.)&lt;br /&gt;
|-&lt;br /&gt;
|[http://developer.3dlabs.com/documents/glmanpage_index.htm 3dLabs]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die Orginalspezifikationen der OpenGL 1.0 und OpenGL 1.1 Befehle.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von Englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glfunc01_4f03.asp MSDN von Microsoft]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|OpenGL Dokumentation in der MSDN. Die Erklärung der MSDN sind meist keine reinen Kopien der Orginalspezifikationen, sondern enthalten hin und wieder auch zusätzliche Informationen, oder formulieren Texte auf verständlichere Art und Weise.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLU ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GLU|DGL Wiki - Kategorie GLU]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten GLU Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glu/ OpenGL.org - Orginal Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Orginalspezifikationen für die GLU Befehle. (Diese HTML-Dokumente sind nicht Copy&amp;amp;Paste freundlich, da sie vermutlich automatisch aus vorhandenen Dateien (Postscript) erzeugt wurden.)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glufnc01_0e43.asp MSDN von Microsoft]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|GLU Dokumentation in der MSDN. Die Erklärung der MSDN sind meist keine reinen Kopien der Orginalspezifikationen, sondern enthalten hin und wieder auch zusätzliche Informationen, oder formulieren Texte auf verständlichere Art und Weise.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLX ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GLX|DGL Wiki - Kategorie GLX]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten GLX Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glx/ OpenGL.org - Orginal  Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Orgninalspezifikationen der GLX Befehle bei OpenGL.org.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von Englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== WGL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:WGL|DGL Wiki - Kategorie WGL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Wiki-Kategorie die alle übersetzten WGL Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://developer.3dlabs.com/documents/wglmanpage_index.htm 3dLabs]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung einiger WGL Befehlsspezifikationen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLUT ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://freeglut.sourceforge.net/docs/api.php The freeglut Projekt]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Englischsprachige Dokumentation zum OpenGL Utility Toolkit kurz GLUT.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SDL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:SDL|DGL Wiki - Kategorie SDL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Übersicht aller auf die SDL bezogenen Artikel hier im Wiki. Darunter befinden sich eine Vielzahl von Übersetzungen der SDL Befehlspezifikationen. Diese können auch in der [[SDL-Funktionsübersicht]] gefunden werden.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.libsdl.org/cgi/docwiki.cgi/SDL_20API libsdl.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Das Dokumentationswiki von libSDL.org enthält die komplette Dokumenation zur SDL in englischer Sprache.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.fp.sdl.de.vu/ fp.sdl.de.vu]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Eine Webseite die speziell Informationen über die Programmierung von SDL unter Freepascal zur Verfügung stellt.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== FAQs ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[FAQ| DGL Wiki - FAQ]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein FAQ (Frequently Asked Questions = Häufig gestellte Fragen) zu DelphiGL.com und dem DGL Wiki.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dsource.de/faq/index.htm 3dsource.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein FAQ zu Fragen rund um OpenGL.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Effekte und Techniken mit OpenGL ==&lt;br /&gt;
&lt;br /&gt;
===Glow===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamasutra.com/view/feature/2107/realtime_glow.php Gamasutra]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt, wie man mit Hilfe von Shader(hier DirectX Shader) den Gloweffekt in Realtime umsetzt. Dabei wird erst die Technik dahinter erklährt, und dann wie man sie Schritt für Schritt umsetzt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://collective.valve-erc.com/index.php?go=tron1 valve-erc.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Schritt für Schritt Anleitung, wie man mit Hilfe von Cg in OpenGL den Glow Effekt realisieren kann &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===HDR===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/columns/hardcore/hdrrendering/ gamedev.net]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Hier wird sehr kurz eingeleitet, was HDR Rendering überhaupt ist, dann wird der Aufbau des *.hdr Formats erläutert, und dann geht es schon von 0 auf 100 zum Programmieren. Erklährungen gibt es kaum, dafür werden fertige Shader(für DirectX) geboten. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/reference/articles/article2208.asp gamedev.net]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt auch nur etwas kurz das HDR Verfahren, jedoch mit mehr mathematischen Hintergrund in Sachen Tonemapping. Beispielcode für Tonemapping in C++ liegt bei. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===BSP Bäume===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dtechdev.com/tutorials/leafbsp/3dbsptrees.html 3dtechdev.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Das beste Dokument überhaupt, für allem die selber BSP Bäume compilieren möchte. Ist belegt mit sehr viel Grafik. Erst beginnt er das Prinzip allgemein zum umschreiben, dann wird alles genau erläutert, und mit verständlichen Pseudocode untermalt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dtechdev.com/tutorials/illegalgeometry/illegalgeometrytut.html 3dtechdev.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Nicht ganz so gut geworden, wie sein erstes Tutorial, aber erklährt auch sehr gut, wie man illegale Geometrie aufspürt und beseitigt. Wieder mit Grafiken und Pseudocodes verständlich belegt. Hiermit kann man seinem Map-Compiler den letzten Schliff verleien. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/reference/articles/article981.asp Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Von Michael Abrash, dürfte der ''Erfinder'' von Quake sein. Naja, meine Englischkenntnisse reichen hier nicht ganz aus, um den Text zu verstehen. Ist etwas umständlich geschrieben. Dafür mit Grafiken unterlegt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.zfx-online.de/Tutorials.php?ID=11 Part 1 - Allgemein]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Einzigste deutsche Referenz zu BSP Bäumen, dafür Daumen hoch. Ist aber nicht das Wahre: schlechter C Code, und ich hatte auch nicht den Einduck, das er die Theorie zu diesem Thema bis in die Tiefe verstanden hat(oder er wollte es nicht zu akademisch Erklähren oO). Aber ein guter Einstieg in dieses Thema. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.zfx-online.de/Tutorials.php?ID=13 Part 2 - Kollision und PVS]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.cs.uwec.edu/~stevende/cs455/programs/GameTutorials%20-%20Quake%203%20BSP%20Format.htm Quake3 *.bsp Format]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die beste Dokumentation für das BSP Format, die ich gefunden habe, besser als den Quake3 Sourcecode zu durchforsten. Leider etwas magere Eklährung zu wichtigen Themen wie Patches(Curved Surfaces). Ich pers. hatte jetzt 1 1/2 Wochen gebraucht, um das *.bsp Format vollständig zu verstehen. Ist aber anscheinend die beste Format Dokumentation im Netz. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_q2bsp.shtml Quake2 *.bsp Format]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Kann auch nur soviel sagen, wie beim Link zuvor. Es fehlen hier auch zum Teil Informationen. Man muss halt viel ausprobieren, und sich den Quake 2 Source zu Herzen nehmen, damit man es versteht. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Himmel &amp;amp; Wolken===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/community/forums/topic.asp?topic_id=86024 Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Guter Thread mit vielen Anregungen und Links. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/community/forums/topic.asp?topic_id=135654 Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Hier wird die Diskussion zum obigen Link weitergeführt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://freespace.virgin.net/hugo.elias/models/m_clouds.htm Plasma]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine nette Idee um Plasma in Echtzeit zu generieren, und zu verändern. Leider nichts zum Shading. &lt;br /&gt;
|-&lt;br /&gt;
|[http://nis-lab.is.s.u-tokyo.ac.jp/~nis/cdrom/sig00_cloud.pdf 3D Wolken]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Paper über generieren und rendern von 3 dimensionalen Wolken inklusive Schatten und Lichtstrahlen. Ich hab nur den Lichtstahlen-Algorithmus ausprobiert. Saulangsam aber sehr einfach zu implementieren. Einen Blick ist es auf jeden Fall wert. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.geocities.com/ngdash/whitepapers/skydomecolor.html Skydome]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Wenn man mal schnell gute Farben für seinen Skydome braucht... &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Terrain===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_geomipmaps.shtml FlipCode]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Artikel zu Geomipmaping. Zummindest hab ich es hier zum ersten mal gesehen. Und es funzt ganz gut. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.vterrain.org Virtual Terrain Project]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Seite mit Links und Artikeln zu allem, was etwas mit Terrainrendering zu tun hat.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sonstiges===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[Materialsammlung]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Sammlung von gängigen Parametern für [[glMaterial]] hier im Wiki.&lt;br /&gt;
|-&lt;br /&gt;
|[http://freespace.virgin.net/hugo.elias/radiosity/radiosity.htm Radiosity]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Erklährt sehr schön die Funktionsweise von Radiosity, liefert Beispielcodes und ist recht gut illustriert.&lt;br /&gt;
|-&lt;br /&gt;
|[http://legion.gibbering.net/projectx/paper/shadow%20mapping/ Shadowmapping]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt das Trapezoidal Shadow Mapping - Verfahren für gerichte Lichter.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_generatingnames.shtml Namensgenerator]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Per Zufallsgenrator Namen erzeugen, und nie wieder kreativ werden müssen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.paulsprojects.net/tutorials/simplebump/simplebump.html Bumpmapping]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Bumpmapping auf Lowend-Grakas. Damals war Bumpmapping noch was ganz tolles... &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.paulsprojects.net/opengl/dpreflect/dpreflect.html Dot Product Reflect]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|zwar nur ne Demo, aber wenn man schon immer mal mit EMBM das Wasser aus Morrowind nachproggen wollte... &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Beispiele/Demos mit Quelltext ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.delphigl.de DelphiGL.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier finden sich besonders eindrucksvolle Newton Physik Demos. Meißtens sogar mit Quelltext.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.shadow3d.de.vu/ Shadow 3D]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier finden sich zwei Demos wie man Quake 3 Modelle lädt und eine glSlang Demo&lt;br /&gt;
|-&lt;br /&gt;
|[[Shadersammlung]] im DGL Wiki&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier findet man freie Shadersourcen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.humus.name Humus]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Diverse eindrucksvolle Demos zu verschiedenen Techniken, häufig mit Quelltext in C (teilweise OpenGL / DirectX)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== weitere Links ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www-user.tu-chemnitz.de/~pester/Lehre/CompGeo.pdf CompGeo.pdf]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Script &amp;quot;Einführung in die Computergeometrie&amp;quot; von Dr. Pester (TU-Chemnitz). Ideales Nachschlagewerk für die Mathematik die einem bei der Grafikprogrammierung so begegnet.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.robsite.de/ robsite.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Auf dieser riesigen Seite finden sich auch viele weitere Links über verschiedene Themen der 3D Programmierung.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dlinks.com/links.cfm?categoryid=3&amp;amp;subcategoryid=21 3dlinks.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Diese Seite hat es sich zur Hauptaufgabe gemacht Links auf Seiten mit dem Thema 3D zu sammeln.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.two-kings.de/links.html two-kings.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Sammlung diverser interessanter Links, vorallem auf Themen im gamedev-Forum verweisend.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.delgine.com Delgine.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Heimat des freien 3D Modellers &amp;quot;DeleD&amp;quot;, welcher in Delphi programmiert ist. Ihr findet dort auch Modellpackete, Texturpackete, Plugins und Hilfe bei der Programmierung von Delphi und OpenGL.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Spieleentwicklung =&lt;br /&gt;
&lt;br /&gt;
==Allgemein==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.spieleprogrammierung.net/ Spieleprogrammierung - OpenGL - GLSL - OpenAL - KI - Animation - Spielephysik]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr Artikel, Tutorials und Programmbeispiele rund um das Thema Spieleprogrammierung. Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://graphics-and-physics-framework.spieleprogrammierung.net/ OpenGL Graphics And Physics Framework]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr ein frei verfügbares OpenGL basiertes Grafik und Physik Framework (LGPL-Lizenz) samt zugehöriger Probammbeispiele. Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://audio-framework.spieleprogrammierung.net/ OpenAL Audio Framework]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr ein frei verfügbares OpenAL Audio Framework (LGPL-Lizenz) samt zugehöriger Probammbeispiele. Unterstützt werden 3D Sounds, EFX (EAX Alternative) Reverb Effekte sowie Audio Streaming (Music and Voices). Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://spieleentwicklung-im-web.spieleprogrammierung.net/ Spieleentwicklung im Web]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr Links (E-Books, Präsentationen, wissenschaftliche Arbeiten und Tutorials) zu verschiedenen Themengebieten der Spieleentwicklung.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Kopierschutz==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://inner-smile.com/nocrack.phtml Inner-Smile.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Seite mit Gedanken zum Thema &amp;quot;Wie schütze ich meine Programme vor Crackern&amp;quot;. Falls die Seite nicht erreichbar ist hat Google noch ne [http://www.google.com/search?q=cache:hpqPT5G4WB0J:www.inner-smile.com/nocrack.phtml+http://inner-smile.com/nocrack.phtml&amp;amp;hl=de&amp;amp;gl=de&amp;amp;ct=clnk&amp;amp;cd=1 Version im Archiv].&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Künstliche Intelligenz ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.kbs.uni-hannover.de/Lehre/KI2/Presentationen/presentation9798/esprit/spieltheorie/spieltheorie.html Uni-Hannover - Spieltheorie]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Artikel über die Grundlagen von KI in Spielen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.robsite.de/tutorials.php?tut=ki Robsite KI-Tutorials]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Sammlung von Texten zum Thema KI in Spielen. Beispiele sind meist in C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://ai-depot.com/ AI-Depot.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Seite die sich ausschließlich mit KI in Spielen beschäftigt.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ai-junkie.com/links.html AI-Junkie.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Linkseite mit vielen KI relevanten Links. Die Seite AI-Junie selbst behandelt auch viele Themen rund um KI.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.aiwisdom.com/ AIWisdom.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Seite die sich mit KIs in Spielen beschäftigt und sich zum Ziel gesetzt hat, alle Artikel zum Thema zu finden und zu Katalogisieren. Es gibt hier auch Artikel über die KIs bestehender Spiele.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.aiguru.com/ AIGuru.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Newsseite zum Thema KI, Künstliches Leben, Hiernforschung, Robotik, Nanotechnologie - Halt alles was Spass macht.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.generation5.org/ Generation5.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Seite über KI, Robotik, etc. . Leider scheint die Seite Probleme zu haben regelmäßig aktualisiert zu werden. Aber zumindest sollte man einige Artikel finden. Die werden ja nicht schlecht.&lt;br /&gt;
|-&lt;br /&gt;
|www.gameai.com&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|''Wurde Januar 2010 als down gemeldet. Weiss irgendwer etwas genaueres?'' Seite zum Thema KI in Spielen. Soll wohl einen gewissen Stellenwert in der AI-Szene haben.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www-i1.informatik.rwth-aachen.de/~algorithmus/algo19.php Algorithmus der Woche - Informatikjahr 2006]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Vielleicht schon etwas älter aber doch eine gute Anleitung um eine einfache Schach-KI zu erstellen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Ressourcen =&lt;br /&gt;
In dieser Gruppe finden sich Links um die Ressourcen für Eure Projekte zu erstellen.&lt;br /&gt;
&lt;br /&gt;
== Texturen / 2D-Grafiken ==&lt;br /&gt;
&lt;br /&gt;
=== Texturen ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;|Genre&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;|Lizenz&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|GPL&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|MPL&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|OSS&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|CSS&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Komm.&lt;br /&gt;
!width=&amp;quot;35%&amp;quot;|Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.davegh.com/vg/home.htm]&lt;br /&gt;
|Fantasy&lt;br /&gt;
|[http://www.davegh.com/vg/termsandconditions.htm Eigene]&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|ja&lt;br /&gt;
|ja&lt;br /&gt;
|nein&lt;br /&gt;
|Die Lizenz vererbt sich in die Projekte hinein.&lt;br /&gt;
|-&lt;br /&gt;
|url&lt;br /&gt;
|Futuristisch, Mittelalter, etc.&lt;br /&gt;
|CC-BY-SA, etc., gerne auch mit Direktlink auf die Lizenzseite, so vorhanden.&lt;br /&gt;
|ja/nein/?&lt;br /&gt;
|ja/nein/?&lt;br /&gt;
|ja/nein/?&lt;br /&gt;
|ja/nein/?&lt;br /&gt;
|ja/nein/?&lt;br /&gt;
|Alle Bilder sind von Käse&lt;br /&gt;
|}&lt;br /&gt;
'''Legende:'''&lt;br /&gt;
:'''Kostenpflichtige Seiten''' sind mit einem * zu '''kennzeichnen'''&lt;br /&gt;
:GPL: Kompatibel mit der GPL&lt;br /&gt;
:MPL: Kompatibel mit der MPL&lt;br /&gt;
:OSS: Verwendung in OpenSource Software nicht verboten&lt;br /&gt;
:CSS: Verwendung in ClosedSource Software nicht verboten&lt;br /&gt;
:Komm: Verwendung in kommerzieller Software nicht verboten&lt;br /&gt;
&lt;br /&gt;
=== Texturerstellung ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://3d.diehlsworld.de/textures/index.htm 3d.diehlsworld.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet ihr kurze aber inhaltlich reiche Tutorials zu der Frage &amp;quot;Wie erstelle ich XXXXX-Texturen&amp;quot;. Dabei reicht die Palette von Untergrundtexturen wie Gras, Sand , Fels und Wasser (und Kombinationen dieser) bis hin zu Blitzen und Partikeln. Als Programm wird hier Photoshop verwendet.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gimps.de/gimp/textur-muster/ gimps.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Schritt für Schritt Anleitungen wie man mit Gimp verschiedene Texturen erstellt.&lt;br /&gt;
|-&lt;br /&gt;
|[http://cbt.k090999.de/gimp.php#texturen k090999.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Gimptutorials zum Erstellen verschiedene Texturen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Modelle / 3D-Grafiken ==&lt;br /&gt;
&lt;br /&gt;
=== Blender ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://blendpolis.de/f/viewtopic.php?t=5786 Blendpolis]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Ein Thread im Forum von [http://blendpolis.de Blendpolis] in dem '''sehr''' viele Tutorials aufgelistet sind&lt;br /&gt;
|-&lt;br /&gt;
|[http://blendpolis.de/f/article_cat.php?fldAuto=7 Blendpolis]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Eigentliche Tutorial Seite von [http://blendpolis.de Blendpolis] die Auswahl ist hier aber nicht so groß&lt;br /&gt;
|-&lt;br /&gt;
|[http://wikivid.com/index.php/Blender Blender at wikivid.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Linksammlung von Blender Video Tutorials&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.blender.org/education-help/tutorials/getting-started/ blender3d.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Auch die Heimatseite von Blender bietet viele Tutorials unter anderm auch Video Tuorials&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.Blenderunderground.com Blenderunderground]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| '''sehr gute''' Video-Tutorials&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sounds ==&lt;br /&gt;
&lt;br /&gt;
===Musik===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.jamendo.com/ Jamendo.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Viele Künstler stellen hier ihre Alben unter einer Creative Commons Lizenz online. Man kann dort die Künstler auch kontaktieren und fragen ob man ihre Musik nutzen kann. Taugt außerdem als Radio! ;)&lt;br /&gt;
|-&lt;br /&gt;
|[http://incompetech.com/m/c/royalty-free/ Incompetech.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Viele sehr schön gemacht instrumentale Musik aus allen möglichen Genres. Sie ist frei verwenderbar, wenn man den Macher der Musik (Kevin MacLeod) in seinem Programm erwähnt. Aber das hat er auch verdient. Folgende Programme nutzen beispielsweise (auch) Musik von incompetech.com:&lt;br /&gt;
* OpenParty&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Soundeffekte===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.freesound.org/ freesound.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Diverse Sounds unter [http://www.creativecommons.org/ CreativeCommons] Lizenzen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Soundprogramme===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://audacity.sourceforge.net/?lang=de Sourceforgeseite von Audacity]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein einfaches, freies Programm um Sounddateien zu bearbeiten. Man kann es auch nutzen um Soundeffekte neu zu erstellen, indem man z.B. ein Geräusch mit dem Mikrofon aufnimmt und einige Effekt anwendet, um es passender und nicht mehr aufgenommen klingen zu lassen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://lmms.sourceforge.net/ LMMS]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|LMMS (Linux MultiMedia Studio) ist ein OpenSource+Freeware Composer-Programm ähnlich zum bekannteren aber auch teuren CuBase(r). Trotz des Namens auch für Windows erhältlich.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Link&amp;diff=25338</id>
		<title>Link</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Link&amp;diff=25338"/>
				<updated>2011-08-13T17:54:36Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: /* Texturen */ Komm-Spalte hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
!!!!!!!! NUTZT DIESE TABELLE ALS VORLAGE FÜR WEITERE LINKTABELLEN !!!!!!!&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[Link]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[Link]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Linksammlung soll allgemeine Links zu unterschiedlichen Themen bieten, die mit der Multimediaentwicklung zu tun haben.&lt;br /&gt;
{{Hinweis|Vielleicht ist eine Zusammenführung mit [[Tool]] sinnvoll!}}&lt;br /&gt;
{{Hinweis|Vielleicht ist eine Aufteilung in Unterseiten sinnvoll (möglicherweise mit Kategorien)}}&lt;br /&gt;
&lt;br /&gt;
= Entwicklung mit OpenGL =&lt;br /&gt;
&lt;br /&gt;
== Hardwareinfos ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://delphi3d.net/hardware/listreports.php OpenGL Hardware Registry - Hardwareübersicht]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Datenbank aller Grafikkarten die in der Harware Registry vorhanden sind. Die einzelnen Artikel enthalten Infos darüber, welche Extensions von der Grafikkarte unterstützt werden.&lt;br /&gt;
|-&lt;br /&gt;
|[http://delphi3d.net/hardware/allexts.php OpenGL Hardware Registry - Extensionübersicht]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Datenbank aller Extensions die in der Harware Registry vorhanden sind. Die einzelnen Artikel enthalten Infos darüber, welche Grafikkarten die entsprechende Extension unterstützen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
||[[Tutorial|DGL Wiki - Tutorial]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|DelphiGL.com ist Betreiber dieses Wikis und stellt eine Vielzahl Tutorials mit Schwehrpunkt OpenGL zur Verfügung. &lt;br /&gt;
Neben Tutorials für Einsteiger und OpenGL Anfänger gibt es auch fortgeschrittene Themen wie Shader oder Partikelsysteme.Sprache der Wahl ist hier Delphi.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.joachimrohde.com/cms/xoops/modules/articles/index.php?cat_id=1 joachimrohde.com]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet ihr deutsche Übersetzungen der bekannten NeHe Tutorials. Sprache der Wahl ist hier C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.cg.tuwien.ac.at/studentwork/VRSem96/OpenGL/ Technische Universität Wien]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[http://nehe.gamedev.net/ Nehe] &lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die berühmt berüchtigten NeHe Tutorials sind eine umfangreiche Sammlung an Tutorials zum Thema OpenGL. Von Anfängertutorials bis hin zu komplexen Effekten wird alles behandelt. Sprache der Wahl ist hier C++. (Eine Übersetzung der NeHe Tutorials findet ihr bei Joachim Rhode (siehe oben). )&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.sulaco.co.za/tut.htm sulaco.co.za] &lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| OpenGL Beispiele in Delphi&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenGL Funktionen ==&lt;br /&gt;
&lt;br /&gt;
=== GL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GL|DGL Wiki - Kategorie GL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten OpenGL Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL.tar.gz OpenGL.org - Orginal Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die Orginalspezifikationen der OpenGL 1.0 und OpenGL 1.1 Befehle. (Diese HTML-Dokumente sind nicht Copy&amp;amp;Paste freundlich, da sie vermutlich automatisch aus vorhandenen Dateien (Postscript) erzeugt wurden.)&lt;br /&gt;
|-&lt;br /&gt;
|[http://developer.3dlabs.com/documents/glmanpage_index.htm 3dLabs]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die Orginalspezifikationen der OpenGL 1.0 und OpenGL 1.1 Befehle.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von Englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glfunc01_4f03.asp MSDN von Microsoft]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|OpenGL Dokumentation in der MSDN. Die Erklärung der MSDN sind meist keine reinen Kopien der Orginalspezifikationen, sondern enthalten hin und wieder auch zusätzliche Informationen, oder formulieren Texte auf verständlichere Art und Weise.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLU ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GLU|DGL Wiki - Kategorie GLU]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten GLU Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glu/ OpenGL.org - Orginal Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Orginalspezifikationen für die GLU Befehle. (Diese HTML-Dokumente sind nicht Copy&amp;amp;Paste freundlich, da sie vermutlich automatisch aus vorhandenen Dateien (Postscript) erzeugt wurden.)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glufnc01_0e43.asp MSDN von Microsoft]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|GLU Dokumentation in der MSDN. Die Erklärung der MSDN sind meist keine reinen Kopien der Orginalspezifikationen, sondern enthalten hin und wieder auch zusätzliche Informationen, oder formulieren Texte auf verständlichere Art und Weise.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLX ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GLX|DGL Wiki - Kategorie GLX]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten GLX Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glx/ OpenGL.org - Orginal  Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Orgninalspezifikationen der GLX Befehle bei OpenGL.org.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von Englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== WGL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:WGL|DGL Wiki - Kategorie WGL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Wiki-Kategorie die alle übersetzten WGL Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://developer.3dlabs.com/documents/wglmanpage_index.htm 3dLabs]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung einiger WGL Befehlsspezifikationen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLUT ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://freeglut.sourceforge.net/docs/api.php The freeglut Projekt]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Englischsprachige Dokumentation zum OpenGL Utility Toolkit kurz GLUT.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SDL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:SDL|DGL Wiki - Kategorie SDL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Übersicht aller auf die SDL bezogenen Artikel hier im Wiki. Darunter befinden sich eine Vielzahl von Übersetzungen der SDL Befehlspezifikationen. Diese können auch in der [[SDL-Funktionsübersicht]] gefunden werden.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.libsdl.org/cgi/docwiki.cgi/SDL_20API libsdl.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Das Dokumentationswiki von libSDL.org enthält die komplette Dokumenation zur SDL in englischer Sprache.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.fp.sdl.de.vu/ fp.sdl.de.vu]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Eine Webseite die speziell Informationen über die Programmierung von SDL unter Freepascal zur Verfügung stellt.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== FAQs ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[FAQ| DGL Wiki - FAQ]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein FAQ (Frequently Asked Questions = Häufig gestellte Fragen) zu DelphiGL.com und dem DGL Wiki.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dsource.de/faq/index.htm 3dsource.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein FAQ zu Fragen rund um OpenGL.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Effekte und Techniken mit OpenGL ==&lt;br /&gt;
&lt;br /&gt;
===Glow===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamasutra.com/view/feature/2107/realtime_glow.php Gamasutra]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt, wie man mit Hilfe von Shader(hier DirectX Shader) den Gloweffekt in Realtime umsetzt. Dabei wird erst die Technik dahinter erklährt, und dann wie man sie Schritt für Schritt umsetzt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://collective.valve-erc.com/index.php?go=tron1 valve-erc.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Schritt für Schritt Anleitung, wie man mit Hilfe von Cg in OpenGL den Glow Effekt realisieren kann &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===HDR===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/columns/hardcore/hdrrendering/ gamedev.net]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Hier wird sehr kurz eingeleitet, was HDR Rendering überhaupt ist, dann wird der Aufbau des *.hdr Formats erläutert, und dann geht es schon von 0 auf 100 zum Programmieren. Erklährungen gibt es kaum, dafür werden fertige Shader(für DirectX) geboten. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/reference/articles/article2208.asp gamedev.net]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt auch nur etwas kurz das HDR Verfahren, jedoch mit mehr mathematischen Hintergrund in Sachen Tonemapping. Beispielcode für Tonemapping in C++ liegt bei. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===BSP Bäume===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dtechdev.com/tutorials/leafbsp/3dbsptrees.html 3dtechdev.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Das beste Dokument überhaupt, für allem die selber BSP Bäume compilieren möchte. Ist belegt mit sehr viel Grafik. Erst beginnt er das Prinzip allgemein zum umschreiben, dann wird alles genau erläutert, und mit verständlichen Pseudocode untermalt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dtechdev.com/tutorials/illegalgeometry/illegalgeometrytut.html 3dtechdev.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Nicht ganz so gut geworden, wie sein erstes Tutorial, aber erklährt auch sehr gut, wie man illegale Geometrie aufspürt und beseitigt. Wieder mit Grafiken und Pseudocodes verständlich belegt. Hiermit kann man seinem Map-Compiler den letzten Schliff verleien. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/reference/articles/article981.asp Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Von Michael Abrash, dürfte der ''Erfinder'' von Quake sein. Naja, meine Englischkenntnisse reichen hier nicht ganz aus, um den Text zu verstehen. Ist etwas umständlich geschrieben. Dafür mit Grafiken unterlegt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.zfx-online.de/Tutorials.php?ID=11 Part 1 - Allgemein]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Einzigste deutsche Referenz zu BSP Bäumen, dafür Daumen hoch. Ist aber nicht das Wahre: schlechter C Code, und ich hatte auch nicht den Einduck, das er die Theorie zu diesem Thema bis in die Tiefe verstanden hat(oder er wollte es nicht zu akademisch Erklähren oO). Aber ein guter Einstieg in dieses Thema. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.zfx-online.de/Tutorials.php?ID=13 Part 2 - Kollision und PVS]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.cs.uwec.edu/~stevende/cs455/programs/GameTutorials%20-%20Quake%203%20BSP%20Format.htm Quake3 *.bsp Format]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die beste Dokumentation für das BSP Format, die ich gefunden habe, besser als den Quake3 Sourcecode zu durchforsten. Leider etwas magere Eklährung zu wichtigen Themen wie Patches(Curved Surfaces). Ich pers. hatte jetzt 1 1/2 Wochen gebraucht, um das *.bsp Format vollständig zu verstehen. Ist aber anscheinend die beste Format Dokumentation im Netz. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_q2bsp.shtml Quake2 *.bsp Format]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Kann auch nur soviel sagen, wie beim Link zuvor. Es fehlen hier auch zum Teil Informationen. Man muss halt viel ausprobieren, und sich den Quake 2 Source zu Herzen nehmen, damit man es versteht. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Himmel &amp;amp; Wolken===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/community/forums/topic.asp?topic_id=86024 Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Guter Thread mit vielen Anregungen und Links. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/community/forums/topic.asp?topic_id=135654 Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Hier wird die Diskussion zum obigen Link weitergeführt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://freespace.virgin.net/hugo.elias/models/m_clouds.htm Plasma]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine nette Idee um Plasma in Echtzeit zu generieren, und zu verändern. Leider nichts zum Shading. &lt;br /&gt;
|-&lt;br /&gt;
|[http://nis-lab.is.s.u-tokyo.ac.jp/~nis/cdrom/sig00_cloud.pdf 3D Wolken]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Paper über generieren und rendern von 3 dimensionalen Wolken inklusive Schatten und Lichtstrahlen. Ich hab nur den Lichtstahlen-Algorithmus ausprobiert. Saulangsam aber sehr einfach zu implementieren. Einen Blick ist es auf jeden Fall wert. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.geocities.com/ngdash/whitepapers/skydomecolor.html Skydome]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Wenn man mal schnell gute Farben für seinen Skydome braucht... &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Terrain===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_geomipmaps.shtml FlipCode]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Artikel zu Geomipmaping. Zummindest hab ich es hier zum ersten mal gesehen. Und es funzt ganz gut. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.vterrain.org Virtual Terrain Project]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Seite mit Links und Artikeln zu allem, was etwas mit Terrainrendering zu tun hat.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sonstiges===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[Materialsammlung]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Sammlung von gängigen Parametern für [[glMaterial]] hier im Wiki.&lt;br /&gt;
|-&lt;br /&gt;
|[http://freespace.virgin.net/hugo.elias/radiosity/radiosity.htm Radiosity]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Erklährt sehr schön die Funktionsweise von Radiosity, liefert Beispielcodes und ist recht gut illustriert.&lt;br /&gt;
|-&lt;br /&gt;
|[http://legion.gibbering.net/projectx/paper/shadow%20mapping/ Shadowmapping]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt das Trapezoidal Shadow Mapping - Verfahren für gerichte Lichter.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_generatingnames.shtml Namensgenerator]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Per Zufallsgenrator Namen erzeugen, und nie wieder kreativ werden müssen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.paulsprojects.net/tutorials/simplebump/simplebump.html Bumpmapping]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Bumpmapping auf Lowend-Grakas. Damals war Bumpmapping noch was ganz tolles... &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.paulsprojects.net/opengl/dpreflect/dpreflect.html Dot Product Reflect]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|zwar nur ne Demo, aber wenn man schon immer mal mit EMBM das Wasser aus Morrowind nachproggen wollte... &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Beispiele/Demos mit Quelltext ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.delphigl.de DelphiGL.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier finden sich besonders eindrucksvolle Newton Physik Demos. Meißtens sogar mit Quelltext.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.shadow3d.de.vu/ Shadow 3D]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier finden sich zwei Demos wie man Quake 3 Modelle lädt und eine glSlang Demo&lt;br /&gt;
|-&lt;br /&gt;
|[[Shadersammlung]] im DGL Wiki&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier findet man freie Shadersourcen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.humus.name Humus]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Diverse eindrucksvolle Demos zu verschiedenen Techniken, häufig mit Quelltext in C (teilweise OpenGL / DirectX)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== weitere Links ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www-user.tu-chemnitz.de/~pester/Lehre/CompGeo.pdf CompGeo.pdf]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Script &amp;quot;Einführung in die Computergeometrie&amp;quot; von Dr. Pester (TU-Chemnitz). Ideales Nachschlagewerk für die Mathematik die einem bei der Grafikprogrammierung so begegnet.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.robsite.de/ robsite.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Auf dieser riesigen Seite finden sich auch viele weitere Links über verschiedene Themen der 3D Programmierung.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dlinks.com/links.cfm?categoryid=3&amp;amp;subcategoryid=21 3dlinks.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Diese Seite hat es sich zur Hauptaufgabe gemacht Links auf Seiten mit dem Thema 3D zu sammeln.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.two-kings.de/links.html two-kings.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Sammlung diverser interessanter Links, vorallem auf Themen im gamedev-Forum verweisend.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.delgine.com Delgine.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Heimat des freien 3D Modellers &amp;quot;DeleD&amp;quot;, welcher in Delphi programmiert ist. Ihr findet dort auch Modellpackete, Texturpackete, Plugins und Hilfe bei der Programmierung von Delphi und OpenGL.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Spieleentwicklung =&lt;br /&gt;
&lt;br /&gt;
==Allgemein==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.spieleprogrammierung.net/ Spieleprogrammierung - OpenGL - GLSL - OpenAL - KI - Animation - Spielephysik]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr Artikel, Tutorials und Programmbeispiele rund um das Thema Spieleprogrammierung. Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://graphics-and-physics-framework.spieleprogrammierung.net/ OpenGL Graphics And Physics Framework]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr ein frei verfügbares OpenGL basiertes Grafik und Physik Framework (LGPL-Lizenz) samt zugehöriger Probammbeispiele. Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://audio-framework.spieleprogrammierung.net/ OpenAL Audio Framework]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr ein frei verfügbares OpenAL Audio Framework (LGPL-Lizenz) samt zugehöriger Probammbeispiele. Unterstützt werden 3D Sounds, EFX (EAX Alternative) Reverb Effekte sowie Audio Streaming (Music and Voices). Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://spieleentwicklung-im-web.spieleprogrammierung.net/ Spieleentwicklung im Web]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr Links (E-Books, Präsentationen, wissenschaftliche Arbeiten und Tutorials) zu verschiedenen Themengebieten der Spieleentwicklung.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Kopierschutz==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://inner-smile.com/nocrack.phtml Inner-Smile.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Seite mit Gedanken zum Thema &amp;quot;Wie schütze ich meine Programme vor Crackern&amp;quot;. Falls die Seite nicht erreichbar ist hat Google noch ne [http://www.google.com/search?q=cache:hpqPT5G4WB0J:www.inner-smile.com/nocrack.phtml+http://inner-smile.com/nocrack.phtml&amp;amp;hl=de&amp;amp;gl=de&amp;amp;ct=clnk&amp;amp;cd=1 Version im Archiv].&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Künstliche Intelligenz ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.kbs.uni-hannover.de/Lehre/KI2/Presentationen/presentation9798/esprit/spieltheorie/spieltheorie.html Uni-Hannover - Spieltheorie]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Artikel über die Grundlagen von KI in Spielen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.robsite.de/tutorials.php?tut=ki Robsite KI-Tutorials]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Sammlung von Texten zum Thema KI in Spielen. Beispiele sind meist in C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://ai-depot.com/ AI-Depot.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Seite die sich ausschließlich mit KI in Spielen beschäftigt.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ai-junkie.com/links.html AI-Junkie.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Linkseite mit vielen KI relevanten Links. Die Seite AI-Junie selbst behandelt auch viele Themen rund um KI.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.aiwisdom.com/ AIWisdom.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Seite die sich mit KIs in Spielen beschäftigt und sich zum Ziel gesetzt hat, alle Artikel zum Thema zu finden und zu Katalogisieren. Es gibt hier auch Artikel über die KIs bestehender Spiele.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.aiguru.com/ AIGuru.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Newsseite zum Thema KI, Künstliches Leben, Hiernforschung, Robotik, Nanotechnologie - Halt alles was Spass macht.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.generation5.org/ Generation5.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Seite über KI, Robotik, etc. . Leider scheint die Seite Probleme zu haben regelmäßig aktualisiert zu werden. Aber zumindest sollte man einige Artikel finden. Die werden ja nicht schlecht.&lt;br /&gt;
|-&lt;br /&gt;
|www.gameai.com&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|''Wurde Januar 2010 als down gemeldet. Weiss irgendwer etwas genaueres?'' Seite zum Thema KI in Spielen. Soll wohl einen gewissen Stellenwert in der AI-Szene haben.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www-i1.informatik.rwth-aachen.de/~algorithmus/algo19.php Algorithmus der Woche - Informatikjahr 2006]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Vielleicht schon etwas älter aber doch eine gute Anleitung um eine einfache Schach-KI zu erstellen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Ressourcen =&lt;br /&gt;
In dieser Gruppe finden sich Links um die Ressourcen für Eure Projekte zu erstellen.&lt;br /&gt;
&lt;br /&gt;
== Texturen / 2D-Grafiken ==&lt;br /&gt;
&lt;br /&gt;
=== Texturen ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;|Genre&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;|Lizenz&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|GPL&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|MPL&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|OSS&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|CSS&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Komm.&lt;br /&gt;
!width=&amp;quot;35%&amp;quot;|Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
|url&lt;br /&gt;
|Futuristisch, Mittelalter, etc.&lt;br /&gt;
|CC-BY-SA, etc., gerne auch mit Direktlink auf die Lizenzseite, so vorhanden.&lt;br /&gt;
|ja/nein/?&lt;br /&gt;
|ja/nein/?&lt;br /&gt;
|ja/nein/?&lt;br /&gt;
|ja/nein/?&lt;br /&gt;
|ja/nein/?&lt;br /&gt;
|Alle Bilder sind von Käse&lt;br /&gt;
|}&lt;br /&gt;
'''Legende:'''&lt;br /&gt;
:'''Kostenpflichtige Seiten''' sind mit einem * zu '''kennzeichnen'''&lt;br /&gt;
:GPL: Kompatibel mit der GPL&lt;br /&gt;
:MPL: Kompatibel mit der MPL&lt;br /&gt;
:OSS: Verwendung in OpenSource Software nicht verboten&lt;br /&gt;
:CSS: Verwendung in ClosedSource Software nicht verboten&lt;br /&gt;
:Komm: Verwendung in kommerzieller Software nicht verboten&lt;br /&gt;
&lt;br /&gt;
=== Texturerstellung ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://3d.diehlsworld.de/textures/index.htm 3d.diehlsworld.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet ihr kurze aber inhaltlich reiche Tutorials zu der Frage &amp;quot;Wie erstelle ich XXXXX-Texturen&amp;quot;. Dabei reicht die Palette von Untergrundtexturen wie Gras, Sand , Fels und Wasser (und Kombinationen dieser) bis hin zu Blitzen und Partikeln. Als Programm wird hier Photoshop verwendet.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gimps.de/gimp/textur-muster/ gimps.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Schritt für Schritt Anleitungen wie man mit Gimp verschiedene Texturen erstellt.&lt;br /&gt;
|-&lt;br /&gt;
|[http://cbt.k090999.de/gimp.php#texturen k090999.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Gimptutorials zum Erstellen verschiedene Texturen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Modelle / 3D-Grafiken ==&lt;br /&gt;
&lt;br /&gt;
=== Blender ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://blendpolis.de/f/viewtopic.php?t=5786 Blendpolis]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Ein Thread im Forum von [http://blendpolis.de Blendpolis] in dem '''sehr''' viele Tutorials aufgelistet sind&lt;br /&gt;
|-&lt;br /&gt;
|[http://blendpolis.de/f/article_cat.php?fldAuto=7 Blendpolis]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Eigentliche Tutorial Seite von [http://blendpolis.de Blendpolis] die Auswahl ist hier aber nicht so groß&lt;br /&gt;
|-&lt;br /&gt;
|[http://wikivid.com/index.php/Blender Blender at wikivid.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Linksammlung von Blender Video Tutorials&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.blender.org/education-help/tutorials/getting-started/ blender3d.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Auch die Heimatseite von Blender bietet viele Tutorials unter anderm auch Video Tuorials&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.Blenderunderground.com Blenderunderground]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| '''sehr gute''' Video-Tutorials&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sounds ==&lt;br /&gt;
&lt;br /&gt;
===Musik===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.jamendo.com/ Jamendo.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Viele Künstler stellen hier ihre Alben unter einer Creative Commons Lizenz online. Man kann dort die Künstler auch kontaktieren und fragen ob man ihre Musik nutzen kann. Taugt außerdem als Radio! ;)&lt;br /&gt;
|-&lt;br /&gt;
|[http://incompetech.com/m/c/royalty-free/ Incompetech.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Viele sehr schön gemacht instrumentale Musik aus allen möglichen Genres. Sie ist frei verwenderbar, wenn man den Macher der Musik (Kevin MacLeod) in seinem Programm erwähnt. Aber das hat er auch verdient. Folgende Programme nutzen beispielsweise (auch) Musik von incompetech.com:&lt;br /&gt;
* OpenParty&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Soundeffekte===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.freesound.org/ freesound.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Diverse Sounds unter [http://www.creativecommons.org/ CreativeCommons] Lizenzen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Soundprogramme===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://audacity.sourceforge.net/?lang=de Sourceforgeseite von Audacity]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein einfaches, freies Programm um Sounddateien zu bearbeiten. Man kann es auch nutzen um Soundeffekte neu zu erstellen, indem man z.B. ein Geräusch mit dem Mikrofon aufnimmt und einige Effekt anwendet, um es passender und nicht mehr aufgenommen klingen zu lassen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://lmms.sourceforge.net/ LMMS]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|LMMS (Linux MultiMedia Studio) ist ein OpenSource+Freeware Composer-Programm ähnlich zum bekannteren aber auch teuren CuBase(r). Trotz des Namens auch für Windows erhältlich.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Link&amp;diff=25337</id>
		<title>Link</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Link&amp;diff=25337"/>
				<updated>2011-08-13T17:51:27Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: /* Texturen / 2D-Grafiken */ Vorlage für Texturenlinks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
!!!!!!!! NUTZT DIESE TABELLE ALS VORLAGE FÜR WEITERE LINKTABELLEN !!!!!!!&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[Link]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[Link]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Linksammlung soll allgemeine Links zu unterschiedlichen Themen bieten, die mit der Multimediaentwicklung zu tun haben.&lt;br /&gt;
{{Hinweis|Vielleicht ist eine Zusammenführung mit [[Tool]] sinnvoll!}}&lt;br /&gt;
{{Hinweis|Vielleicht ist eine Aufteilung in Unterseiten sinnvoll (möglicherweise mit Kategorien)}}&lt;br /&gt;
&lt;br /&gt;
= Entwicklung mit OpenGL =&lt;br /&gt;
&lt;br /&gt;
== Hardwareinfos ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://delphi3d.net/hardware/listreports.php OpenGL Hardware Registry - Hardwareübersicht]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Datenbank aller Grafikkarten die in der Harware Registry vorhanden sind. Die einzelnen Artikel enthalten Infos darüber, welche Extensions von der Grafikkarte unterstützt werden.&lt;br /&gt;
|-&lt;br /&gt;
|[http://delphi3d.net/hardware/allexts.php OpenGL Hardware Registry - Extensionübersicht]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Datenbank aller Extensions die in der Harware Registry vorhanden sind. Die einzelnen Artikel enthalten Infos darüber, welche Grafikkarten die entsprechende Extension unterstützen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
||[[Tutorial|DGL Wiki - Tutorial]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|DelphiGL.com ist Betreiber dieses Wikis und stellt eine Vielzahl Tutorials mit Schwehrpunkt OpenGL zur Verfügung. &lt;br /&gt;
Neben Tutorials für Einsteiger und OpenGL Anfänger gibt es auch fortgeschrittene Themen wie Shader oder Partikelsysteme.Sprache der Wahl ist hier Delphi.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.joachimrohde.com/cms/xoops/modules/articles/index.php?cat_id=1 joachimrohde.com]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet ihr deutsche Übersetzungen der bekannten NeHe Tutorials. Sprache der Wahl ist hier C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.cg.tuwien.ac.at/studentwork/VRSem96/OpenGL/ Technische Universität Wien]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[http://nehe.gamedev.net/ Nehe] &lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die berühmt berüchtigten NeHe Tutorials sind eine umfangreiche Sammlung an Tutorials zum Thema OpenGL. Von Anfängertutorials bis hin zu komplexen Effekten wird alles behandelt. Sprache der Wahl ist hier C++. (Eine Übersetzung der NeHe Tutorials findet ihr bei Joachim Rhode (siehe oben). )&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.sulaco.co.za/tut.htm sulaco.co.za] &lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| OpenGL Beispiele in Delphi&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenGL Funktionen ==&lt;br /&gt;
&lt;br /&gt;
=== GL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GL|DGL Wiki - Kategorie GL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten OpenGL Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL.tar.gz OpenGL.org - Orginal Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die Orginalspezifikationen der OpenGL 1.0 und OpenGL 1.1 Befehle. (Diese HTML-Dokumente sind nicht Copy&amp;amp;Paste freundlich, da sie vermutlich automatisch aus vorhandenen Dateien (Postscript) erzeugt wurden.)&lt;br /&gt;
|-&lt;br /&gt;
|[http://developer.3dlabs.com/documents/glmanpage_index.htm 3dLabs]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die Orginalspezifikationen der OpenGL 1.0 und OpenGL 1.1 Befehle.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von Englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glfunc01_4f03.asp MSDN von Microsoft]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|OpenGL Dokumentation in der MSDN. Die Erklärung der MSDN sind meist keine reinen Kopien der Orginalspezifikationen, sondern enthalten hin und wieder auch zusätzliche Informationen, oder formulieren Texte auf verständlichere Art und Weise.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLU ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GLU|DGL Wiki - Kategorie GLU]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten GLU Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glu/ OpenGL.org - Orginal Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Orginalspezifikationen für die GLU Befehle. (Diese HTML-Dokumente sind nicht Copy&amp;amp;Paste freundlich, da sie vermutlich automatisch aus vorhandenen Dateien (Postscript) erzeugt wurden.)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glufnc01_0e43.asp MSDN von Microsoft]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|GLU Dokumentation in der MSDN. Die Erklärung der MSDN sind meist keine reinen Kopien der Orginalspezifikationen, sondern enthalten hin und wieder auch zusätzliche Informationen, oder formulieren Texte auf verständlichere Art und Weise.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLX ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GLX|DGL Wiki - Kategorie GLX]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten GLX Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glx/ OpenGL.org - Orginal  Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Orgninalspezifikationen der GLX Befehle bei OpenGL.org.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von Englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== WGL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:WGL|DGL Wiki - Kategorie WGL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Wiki-Kategorie die alle übersetzten WGL Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://developer.3dlabs.com/documents/wglmanpage_index.htm 3dLabs]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung einiger WGL Befehlsspezifikationen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLUT ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://freeglut.sourceforge.net/docs/api.php The freeglut Projekt]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Englischsprachige Dokumentation zum OpenGL Utility Toolkit kurz GLUT.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SDL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:SDL|DGL Wiki - Kategorie SDL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Übersicht aller auf die SDL bezogenen Artikel hier im Wiki. Darunter befinden sich eine Vielzahl von Übersetzungen der SDL Befehlspezifikationen. Diese können auch in der [[SDL-Funktionsübersicht]] gefunden werden.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.libsdl.org/cgi/docwiki.cgi/SDL_20API libsdl.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Das Dokumentationswiki von libSDL.org enthält die komplette Dokumenation zur SDL in englischer Sprache.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.fp.sdl.de.vu/ fp.sdl.de.vu]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Eine Webseite die speziell Informationen über die Programmierung von SDL unter Freepascal zur Verfügung stellt.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== FAQs ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[FAQ| DGL Wiki - FAQ]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein FAQ (Frequently Asked Questions = Häufig gestellte Fragen) zu DelphiGL.com und dem DGL Wiki.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dsource.de/faq/index.htm 3dsource.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein FAQ zu Fragen rund um OpenGL.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Effekte und Techniken mit OpenGL ==&lt;br /&gt;
&lt;br /&gt;
===Glow===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamasutra.com/view/feature/2107/realtime_glow.php Gamasutra]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt, wie man mit Hilfe von Shader(hier DirectX Shader) den Gloweffekt in Realtime umsetzt. Dabei wird erst die Technik dahinter erklährt, und dann wie man sie Schritt für Schritt umsetzt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://collective.valve-erc.com/index.php?go=tron1 valve-erc.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Schritt für Schritt Anleitung, wie man mit Hilfe von Cg in OpenGL den Glow Effekt realisieren kann &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===HDR===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/columns/hardcore/hdrrendering/ gamedev.net]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Hier wird sehr kurz eingeleitet, was HDR Rendering überhaupt ist, dann wird der Aufbau des *.hdr Formats erläutert, und dann geht es schon von 0 auf 100 zum Programmieren. Erklährungen gibt es kaum, dafür werden fertige Shader(für DirectX) geboten. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/reference/articles/article2208.asp gamedev.net]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt auch nur etwas kurz das HDR Verfahren, jedoch mit mehr mathematischen Hintergrund in Sachen Tonemapping. Beispielcode für Tonemapping in C++ liegt bei. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===BSP Bäume===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dtechdev.com/tutorials/leafbsp/3dbsptrees.html 3dtechdev.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Das beste Dokument überhaupt, für allem die selber BSP Bäume compilieren möchte. Ist belegt mit sehr viel Grafik. Erst beginnt er das Prinzip allgemein zum umschreiben, dann wird alles genau erläutert, und mit verständlichen Pseudocode untermalt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dtechdev.com/tutorials/illegalgeometry/illegalgeometrytut.html 3dtechdev.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Nicht ganz so gut geworden, wie sein erstes Tutorial, aber erklährt auch sehr gut, wie man illegale Geometrie aufspürt und beseitigt. Wieder mit Grafiken und Pseudocodes verständlich belegt. Hiermit kann man seinem Map-Compiler den letzten Schliff verleien. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/reference/articles/article981.asp Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Von Michael Abrash, dürfte der ''Erfinder'' von Quake sein. Naja, meine Englischkenntnisse reichen hier nicht ganz aus, um den Text zu verstehen. Ist etwas umständlich geschrieben. Dafür mit Grafiken unterlegt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.zfx-online.de/Tutorials.php?ID=11 Part 1 - Allgemein]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Einzigste deutsche Referenz zu BSP Bäumen, dafür Daumen hoch. Ist aber nicht das Wahre: schlechter C Code, und ich hatte auch nicht den Einduck, das er die Theorie zu diesem Thema bis in die Tiefe verstanden hat(oder er wollte es nicht zu akademisch Erklähren oO). Aber ein guter Einstieg in dieses Thema. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.zfx-online.de/Tutorials.php?ID=13 Part 2 - Kollision und PVS]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.cs.uwec.edu/~stevende/cs455/programs/GameTutorials%20-%20Quake%203%20BSP%20Format.htm Quake3 *.bsp Format]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die beste Dokumentation für das BSP Format, die ich gefunden habe, besser als den Quake3 Sourcecode zu durchforsten. Leider etwas magere Eklährung zu wichtigen Themen wie Patches(Curved Surfaces). Ich pers. hatte jetzt 1 1/2 Wochen gebraucht, um das *.bsp Format vollständig zu verstehen. Ist aber anscheinend die beste Format Dokumentation im Netz. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_q2bsp.shtml Quake2 *.bsp Format]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Kann auch nur soviel sagen, wie beim Link zuvor. Es fehlen hier auch zum Teil Informationen. Man muss halt viel ausprobieren, und sich den Quake 2 Source zu Herzen nehmen, damit man es versteht. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Himmel &amp;amp; Wolken===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/community/forums/topic.asp?topic_id=86024 Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Guter Thread mit vielen Anregungen und Links. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/community/forums/topic.asp?topic_id=135654 Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Hier wird die Diskussion zum obigen Link weitergeführt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://freespace.virgin.net/hugo.elias/models/m_clouds.htm Plasma]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine nette Idee um Plasma in Echtzeit zu generieren, und zu verändern. Leider nichts zum Shading. &lt;br /&gt;
|-&lt;br /&gt;
|[http://nis-lab.is.s.u-tokyo.ac.jp/~nis/cdrom/sig00_cloud.pdf 3D Wolken]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Paper über generieren und rendern von 3 dimensionalen Wolken inklusive Schatten und Lichtstrahlen. Ich hab nur den Lichtstahlen-Algorithmus ausprobiert. Saulangsam aber sehr einfach zu implementieren. Einen Blick ist es auf jeden Fall wert. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.geocities.com/ngdash/whitepapers/skydomecolor.html Skydome]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Wenn man mal schnell gute Farben für seinen Skydome braucht... &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Terrain===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_geomipmaps.shtml FlipCode]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Artikel zu Geomipmaping. Zummindest hab ich es hier zum ersten mal gesehen. Und es funzt ganz gut. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.vterrain.org Virtual Terrain Project]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Seite mit Links und Artikeln zu allem, was etwas mit Terrainrendering zu tun hat.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sonstiges===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[Materialsammlung]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Sammlung von gängigen Parametern für [[glMaterial]] hier im Wiki.&lt;br /&gt;
|-&lt;br /&gt;
|[http://freespace.virgin.net/hugo.elias/radiosity/radiosity.htm Radiosity]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Erklährt sehr schön die Funktionsweise von Radiosity, liefert Beispielcodes und ist recht gut illustriert.&lt;br /&gt;
|-&lt;br /&gt;
|[http://legion.gibbering.net/projectx/paper/shadow%20mapping/ Shadowmapping]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt das Trapezoidal Shadow Mapping - Verfahren für gerichte Lichter.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_generatingnames.shtml Namensgenerator]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Per Zufallsgenrator Namen erzeugen, und nie wieder kreativ werden müssen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.paulsprojects.net/tutorials/simplebump/simplebump.html Bumpmapping]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Bumpmapping auf Lowend-Grakas. Damals war Bumpmapping noch was ganz tolles... &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.paulsprojects.net/opengl/dpreflect/dpreflect.html Dot Product Reflect]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|zwar nur ne Demo, aber wenn man schon immer mal mit EMBM das Wasser aus Morrowind nachproggen wollte... &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Beispiele/Demos mit Quelltext ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.delphigl.de DelphiGL.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier finden sich besonders eindrucksvolle Newton Physik Demos. Meißtens sogar mit Quelltext.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.shadow3d.de.vu/ Shadow 3D]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier finden sich zwei Demos wie man Quake 3 Modelle lädt und eine glSlang Demo&lt;br /&gt;
|-&lt;br /&gt;
|[[Shadersammlung]] im DGL Wiki&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier findet man freie Shadersourcen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.humus.name Humus]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Diverse eindrucksvolle Demos zu verschiedenen Techniken, häufig mit Quelltext in C (teilweise OpenGL / DirectX)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== weitere Links ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www-user.tu-chemnitz.de/~pester/Lehre/CompGeo.pdf CompGeo.pdf]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Script &amp;quot;Einführung in die Computergeometrie&amp;quot; von Dr. Pester (TU-Chemnitz). Ideales Nachschlagewerk für die Mathematik die einem bei der Grafikprogrammierung so begegnet.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.robsite.de/ robsite.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Auf dieser riesigen Seite finden sich auch viele weitere Links über verschiedene Themen der 3D Programmierung.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dlinks.com/links.cfm?categoryid=3&amp;amp;subcategoryid=21 3dlinks.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Diese Seite hat es sich zur Hauptaufgabe gemacht Links auf Seiten mit dem Thema 3D zu sammeln.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.two-kings.de/links.html two-kings.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Sammlung diverser interessanter Links, vorallem auf Themen im gamedev-Forum verweisend.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.delgine.com Delgine.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Heimat des freien 3D Modellers &amp;quot;DeleD&amp;quot;, welcher in Delphi programmiert ist. Ihr findet dort auch Modellpackete, Texturpackete, Plugins und Hilfe bei der Programmierung von Delphi und OpenGL.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Spieleentwicklung =&lt;br /&gt;
&lt;br /&gt;
==Allgemein==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.spieleprogrammierung.net/ Spieleprogrammierung - OpenGL - GLSL - OpenAL - KI - Animation - Spielephysik]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr Artikel, Tutorials und Programmbeispiele rund um das Thema Spieleprogrammierung. Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://graphics-and-physics-framework.spieleprogrammierung.net/ OpenGL Graphics And Physics Framework]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr ein frei verfügbares OpenGL basiertes Grafik und Physik Framework (LGPL-Lizenz) samt zugehöriger Probammbeispiele. Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://audio-framework.spieleprogrammierung.net/ OpenAL Audio Framework]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr ein frei verfügbares OpenAL Audio Framework (LGPL-Lizenz) samt zugehöriger Probammbeispiele. Unterstützt werden 3D Sounds, EFX (EAX Alternative) Reverb Effekte sowie Audio Streaming (Music and Voices). Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://spieleentwicklung-im-web.spieleprogrammierung.net/ Spieleentwicklung im Web]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr Links (E-Books, Präsentationen, wissenschaftliche Arbeiten und Tutorials) zu verschiedenen Themengebieten der Spieleentwicklung.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Kopierschutz==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://inner-smile.com/nocrack.phtml Inner-Smile.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Seite mit Gedanken zum Thema &amp;quot;Wie schütze ich meine Programme vor Crackern&amp;quot;. Falls die Seite nicht erreichbar ist hat Google noch ne [http://www.google.com/search?q=cache:hpqPT5G4WB0J:www.inner-smile.com/nocrack.phtml+http://inner-smile.com/nocrack.phtml&amp;amp;hl=de&amp;amp;gl=de&amp;amp;ct=clnk&amp;amp;cd=1 Version im Archiv].&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Künstliche Intelligenz ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.kbs.uni-hannover.de/Lehre/KI2/Presentationen/presentation9798/esprit/spieltheorie/spieltheorie.html Uni-Hannover - Spieltheorie]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Artikel über die Grundlagen von KI in Spielen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.robsite.de/tutorials.php?tut=ki Robsite KI-Tutorials]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Sammlung von Texten zum Thema KI in Spielen. Beispiele sind meist in C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://ai-depot.com/ AI-Depot.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Seite die sich ausschließlich mit KI in Spielen beschäftigt.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ai-junkie.com/links.html AI-Junkie.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Linkseite mit vielen KI relevanten Links. Die Seite AI-Junie selbst behandelt auch viele Themen rund um KI.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.aiwisdom.com/ AIWisdom.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Seite die sich mit KIs in Spielen beschäftigt und sich zum Ziel gesetzt hat, alle Artikel zum Thema zu finden und zu Katalogisieren. Es gibt hier auch Artikel über die KIs bestehender Spiele.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.aiguru.com/ AIGuru.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Newsseite zum Thema KI, Künstliches Leben, Hiernforschung, Robotik, Nanotechnologie - Halt alles was Spass macht.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.generation5.org/ Generation5.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Seite über KI, Robotik, etc. . Leider scheint die Seite Probleme zu haben regelmäßig aktualisiert zu werden. Aber zumindest sollte man einige Artikel finden. Die werden ja nicht schlecht.&lt;br /&gt;
|-&lt;br /&gt;
|www.gameai.com&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|''Wurde Januar 2010 als down gemeldet. Weiss irgendwer etwas genaueres?'' Seite zum Thema KI in Spielen. Soll wohl einen gewissen Stellenwert in der AI-Szene haben.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www-i1.informatik.rwth-aachen.de/~algorithmus/algo19.php Algorithmus der Woche - Informatikjahr 2006]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Vielleicht schon etwas älter aber doch eine gute Anleitung um eine einfache Schach-KI zu erstellen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Ressourcen =&lt;br /&gt;
In dieser Gruppe finden sich Links um die Ressourcen für Eure Projekte zu erstellen.&lt;br /&gt;
&lt;br /&gt;
== Texturen / 2D-Grafiken ==&lt;br /&gt;
&lt;br /&gt;
=== Texturen ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;|Genre&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;|Lizenz&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|GPL&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|MPL&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|OSS&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|CSS&lt;br /&gt;
!width=&amp;quot;40%&amp;quot;|Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
|url&lt;br /&gt;
|Futuristisch, Mittelalter, etc.&lt;br /&gt;
|CC-BY-SA, etc., gerne auch mit Direktlink auf die Lizenzseite, so vorhanden.&lt;br /&gt;
|ja/nein/?&lt;br /&gt;
|ja/nein/?&lt;br /&gt;
|ja/nein/?&lt;br /&gt;
|ja/nein/?&lt;br /&gt;
|Alle Bilder sind von Käse&lt;br /&gt;
|}&lt;br /&gt;
'''Legende:'''&lt;br /&gt;
:'''Kostenpflichtige Seiten''' sind mit einem * zu '''kennzeichnen'''&lt;br /&gt;
:GPL: Kompatibel mit der GPL&lt;br /&gt;
:MPL: Kompatibel mit der MPL&lt;br /&gt;
:OSS: Verwendung in OpenSource Software nicht verboten&lt;br /&gt;
:CSS: Verwendung in ClosedSource Software nicht verboten&lt;br /&gt;
&lt;br /&gt;
=== Texturerstellung ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://3d.diehlsworld.de/textures/index.htm 3d.diehlsworld.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet ihr kurze aber inhaltlich reiche Tutorials zu der Frage &amp;quot;Wie erstelle ich XXXXX-Texturen&amp;quot;. Dabei reicht die Palette von Untergrundtexturen wie Gras, Sand , Fels und Wasser (und Kombinationen dieser) bis hin zu Blitzen und Partikeln. Als Programm wird hier Photoshop verwendet.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gimps.de/gimp/textur-muster/ gimps.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Schritt für Schritt Anleitungen wie man mit Gimp verschiedene Texturen erstellt.&lt;br /&gt;
|-&lt;br /&gt;
|[http://cbt.k090999.de/gimp.php#texturen k090999.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Gimptutorials zum Erstellen verschiedene Texturen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Modelle / 3D-Grafiken ==&lt;br /&gt;
&lt;br /&gt;
=== Blender ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://blendpolis.de/f/viewtopic.php?t=5786 Blendpolis]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Ein Thread im Forum von [http://blendpolis.de Blendpolis] in dem '''sehr''' viele Tutorials aufgelistet sind&lt;br /&gt;
|-&lt;br /&gt;
|[http://blendpolis.de/f/article_cat.php?fldAuto=7 Blendpolis]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Eigentliche Tutorial Seite von [http://blendpolis.de Blendpolis] die Auswahl ist hier aber nicht so groß&lt;br /&gt;
|-&lt;br /&gt;
|[http://wikivid.com/index.php/Blender Blender at wikivid.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Linksammlung von Blender Video Tutorials&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.blender.org/education-help/tutorials/getting-started/ blender3d.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Auch die Heimatseite von Blender bietet viele Tutorials unter anderm auch Video Tuorials&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.Blenderunderground.com Blenderunderground]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| '''sehr gute''' Video-Tutorials&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sounds ==&lt;br /&gt;
&lt;br /&gt;
===Musik===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.jamendo.com/ Jamendo.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Viele Künstler stellen hier ihre Alben unter einer Creative Commons Lizenz online. Man kann dort die Künstler auch kontaktieren und fragen ob man ihre Musik nutzen kann. Taugt außerdem als Radio! ;)&lt;br /&gt;
|-&lt;br /&gt;
|[http://incompetech.com/m/c/royalty-free/ Incompetech.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Viele sehr schön gemacht instrumentale Musik aus allen möglichen Genres. Sie ist frei verwenderbar, wenn man den Macher der Musik (Kevin MacLeod) in seinem Programm erwähnt. Aber das hat er auch verdient. Folgende Programme nutzen beispielsweise (auch) Musik von incompetech.com:&lt;br /&gt;
* OpenParty&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Soundeffekte===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.freesound.org/ freesound.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Diverse Sounds unter [http://www.creativecommons.org/ CreativeCommons] Lizenzen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Soundprogramme===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://audacity.sourceforge.net/?lang=de Sourceforgeseite von Audacity]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein einfaches, freies Programm um Sounddateien zu bearbeiten. Man kann es auch nutzen um Soundeffekte neu zu erstellen, indem man z.B. ein Geräusch mit dem Mikrofon aufnimmt und einige Effekt anwendet, um es passender und nicht mehr aufgenommen klingen zu lassen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://lmms.sourceforge.net/ LMMS]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|LMMS (Linux MultiMedia Studio) ist ein OpenSource+Freeware Composer-Programm ähnlich zum bekannteren aber auch teuren CuBase(r). Trotz des Namens auch für Windows erhältlich.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Link&amp;diff=25336</id>
		<title>Link</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Link&amp;diff=25336"/>
				<updated>2011-08-13T17:44:10Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: Unvollständigen Upload reparieren (2/2)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
!!!!!!!! NUTZT DIESE TABELLE ALS VORLAGE FÜR WEITERE LINKTABELLEN !!!!!!!&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[Link]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[Link]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Linksammlung soll allgemeine Links zu unterschiedlichen Themen bieten, die mit der Multimediaentwicklung zu tun haben.&lt;br /&gt;
{{Hinweis|Vielleicht ist eine Zusammenführung mit [[Tool]] sinnvoll!}}&lt;br /&gt;
{{Hinweis|Vielleicht ist eine Aufteilung in Unterseiten sinnvoll (möglicherweise mit Kategorien)}}&lt;br /&gt;
&lt;br /&gt;
= Entwicklung mit OpenGL =&lt;br /&gt;
&lt;br /&gt;
== Hardwareinfos ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://delphi3d.net/hardware/listreports.php OpenGL Hardware Registry - Hardwareübersicht]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Datenbank aller Grafikkarten die in der Harware Registry vorhanden sind. Die einzelnen Artikel enthalten Infos darüber, welche Extensions von der Grafikkarte unterstützt werden.&lt;br /&gt;
|-&lt;br /&gt;
|[http://delphi3d.net/hardware/allexts.php OpenGL Hardware Registry - Extensionübersicht]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Datenbank aller Extensions die in der Harware Registry vorhanden sind. Die einzelnen Artikel enthalten Infos darüber, welche Grafikkarten die entsprechende Extension unterstützen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
||[[Tutorial|DGL Wiki - Tutorial]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|DelphiGL.com ist Betreiber dieses Wikis und stellt eine Vielzahl Tutorials mit Schwehrpunkt OpenGL zur Verfügung. &lt;br /&gt;
Neben Tutorials für Einsteiger und OpenGL Anfänger gibt es auch fortgeschrittene Themen wie Shader oder Partikelsysteme.Sprache der Wahl ist hier Delphi.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.joachimrohde.com/cms/xoops/modules/articles/index.php?cat_id=1 joachimrohde.com]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet ihr deutsche Übersetzungen der bekannten NeHe Tutorials. Sprache der Wahl ist hier C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.cg.tuwien.ac.at/studentwork/VRSem96/OpenGL/ Technische Universität Wien]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[http://nehe.gamedev.net/ Nehe] &lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die berühmt berüchtigten NeHe Tutorials sind eine umfangreiche Sammlung an Tutorials zum Thema OpenGL. Von Anfängertutorials bis hin zu komplexen Effekten wird alles behandelt. Sprache der Wahl ist hier C++. (Eine Übersetzung der NeHe Tutorials findet ihr bei Joachim Rhode (siehe oben). )&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.sulaco.co.za/tut.htm sulaco.co.za] &lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| OpenGL Beispiele in Delphi&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenGL Funktionen ==&lt;br /&gt;
&lt;br /&gt;
=== GL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GL|DGL Wiki - Kategorie GL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten OpenGL Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL.tar.gz OpenGL.org - Orginal Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die Orginalspezifikationen der OpenGL 1.0 und OpenGL 1.1 Befehle. (Diese HTML-Dokumente sind nicht Copy&amp;amp;Paste freundlich, da sie vermutlich automatisch aus vorhandenen Dateien (Postscript) erzeugt wurden.)&lt;br /&gt;
|-&lt;br /&gt;
|[http://developer.3dlabs.com/documents/glmanpage_index.htm 3dLabs]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die Orginalspezifikationen der OpenGL 1.0 und OpenGL 1.1 Befehle.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von Englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glfunc01_4f03.asp MSDN von Microsoft]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|OpenGL Dokumentation in der MSDN. Die Erklärung der MSDN sind meist keine reinen Kopien der Orginalspezifikationen, sondern enthalten hin und wieder auch zusätzliche Informationen, oder formulieren Texte auf verständlichere Art und Weise.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLU ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GLU|DGL Wiki - Kategorie GLU]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten GLU Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glu/ OpenGL.org - Orginal Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Orginalspezifikationen für die GLU Befehle. (Diese HTML-Dokumente sind nicht Copy&amp;amp;Paste freundlich, da sie vermutlich automatisch aus vorhandenen Dateien (Postscript) erzeugt wurden.)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glufnc01_0e43.asp MSDN von Microsoft]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|GLU Dokumentation in der MSDN. Die Erklärung der MSDN sind meist keine reinen Kopien der Orginalspezifikationen, sondern enthalten hin und wieder auch zusätzliche Informationen, oder formulieren Texte auf verständlichere Art und Weise.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLX ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GLX|DGL Wiki - Kategorie GLX]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten GLX Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glx/ OpenGL.org - Orginal  Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Orgninalspezifikationen der GLX Befehle bei OpenGL.org.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von Englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== WGL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:WGL|DGL Wiki - Kategorie WGL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Wiki-Kategorie die alle übersetzten WGL Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://developer.3dlabs.com/documents/wglmanpage_index.htm 3dLabs]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung einiger WGL Befehlsspezifikationen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLUT ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://freeglut.sourceforge.net/docs/api.php The freeglut Projekt]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Englischsprachige Dokumentation zum OpenGL Utility Toolkit kurz GLUT.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SDL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:SDL|DGL Wiki - Kategorie SDL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Übersicht aller auf die SDL bezogenen Artikel hier im Wiki. Darunter befinden sich eine Vielzahl von Übersetzungen der SDL Befehlspezifikationen. Diese können auch in der [[SDL-Funktionsübersicht]] gefunden werden.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.libsdl.org/cgi/docwiki.cgi/SDL_20API libsdl.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Das Dokumentationswiki von libSDL.org enthält die komplette Dokumenation zur SDL in englischer Sprache.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.fp.sdl.de.vu/ fp.sdl.de.vu]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Eine Webseite die speziell Informationen über die Programmierung von SDL unter Freepascal zur Verfügung stellt.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== FAQs ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[FAQ| DGL Wiki - FAQ]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein FAQ (Frequently Asked Questions = Häufig gestellte Fragen) zu DelphiGL.com und dem DGL Wiki.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dsource.de/faq/index.htm 3dsource.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein FAQ zu Fragen rund um OpenGL.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Effekte und Techniken mit OpenGL ==&lt;br /&gt;
&lt;br /&gt;
===Glow===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamasutra.com/view/feature/2107/realtime_glow.php Gamasutra]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt, wie man mit Hilfe von Shader(hier DirectX Shader) den Gloweffekt in Realtime umsetzt. Dabei wird erst die Technik dahinter erklährt, und dann wie man sie Schritt für Schritt umsetzt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://collective.valve-erc.com/index.php?go=tron1 valve-erc.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Schritt für Schritt Anleitung, wie man mit Hilfe von Cg in OpenGL den Glow Effekt realisieren kann &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===HDR===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/columns/hardcore/hdrrendering/ gamedev.net]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Hier wird sehr kurz eingeleitet, was HDR Rendering überhaupt ist, dann wird der Aufbau des *.hdr Formats erläutert, und dann geht es schon von 0 auf 100 zum Programmieren. Erklährungen gibt es kaum, dafür werden fertige Shader(für DirectX) geboten. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/reference/articles/article2208.asp gamedev.net]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt auch nur etwas kurz das HDR Verfahren, jedoch mit mehr mathematischen Hintergrund in Sachen Tonemapping. Beispielcode für Tonemapping in C++ liegt bei. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===BSP Bäume===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dtechdev.com/tutorials/leafbsp/3dbsptrees.html 3dtechdev.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Das beste Dokument überhaupt, für allem die selber BSP Bäume compilieren möchte. Ist belegt mit sehr viel Grafik. Erst beginnt er das Prinzip allgemein zum umschreiben, dann wird alles genau erläutert, und mit verständlichen Pseudocode untermalt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dtechdev.com/tutorials/illegalgeometry/illegalgeometrytut.html 3dtechdev.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Nicht ganz so gut geworden, wie sein erstes Tutorial, aber erklährt auch sehr gut, wie man illegale Geometrie aufspürt und beseitigt. Wieder mit Grafiken und Pseudocodes verständlich belegt. Hiermit kann man seinem Map-Compiler den letzten Schliff verleien. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/reference/articles/article981.asp Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Von Michael Abrash, dürfte der ''Erfinder'' von Quake sein. Naja, meine Englischkenntnisse reichen hier nicht ganz aus, um den Text zu verstehen. Ist etwas umständlich geschrieben. Dafür mit Grafiken unterlegt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.zfx-online.de/Tutorials.php?ID=11 Part 1 - Allgemein]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Einzigste deutsche Referenz zu BSP Bäumen, dafür Daumen hoch. Ist aber nicht das Wahre: schlechter C Code, und ich hatte auch nicht den Einduck, das er die Theorie zu diesem Thema bis in die Tiefe verstanden hat(oder er wollte es nicht zu akademisch Erklähren oO). Aber ein guter Einstieg in dieses Thema. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.zfx-online.de/Tutorials.php?ID=13 Part 2 - Kollision und PVS]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.cs.uwec.edu/~stevende/cs455/programs/GameTutorials%20-%20Quake%203%20BSP%20Format.htm Quake3 *.bsp Format]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die beste Dokumentation für das BSP Format, die ich gefunden habe, besser als den Quake3 Sourcecode zu durchforsten. Leider etwas magere Eklährung zu wichtigen Themen wie Patches(Curved Surfaces). Ich pers. hatte jetzt 1 1/2 Wochen gebraucht, um das *.bsp Format vollständig zu verstehen. Ist aber anscheinend die beste Format Dokumentation im Netz. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_q2bsp.shtml Quake2 *.bsp Format]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Kann auch nur soviel sagen, wie beim Link zuvor. Es fehlen hier auch zum Teil Informationen. Man muss halt viel ausprobieren, und sich den Quake 2 Source zu Herzen nehmen, damit man es versteht. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Himmel &amp;amp; Wolken===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/community/forums/topic.asp?topic_id=86024 Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Guter Thread mit vielen Anregungen und Links. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/community/forums/topic.asp?topic_id=135654 Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Hier wird die Diskussion zum obigen Link weitergeführt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://freespace.virgin.net/hugo.elias/models/m_clouds.htm Plasma]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine nette Idee um Plasma in Echtzeit zu generieren, und zu verändern. Leider nichts zum Shading. &lt;br /&gt;
|-&lt;br /&gt;
|[http://nis-lab.is.s.u-tokyo.ac.jp/~nis/cdrom/sig00_cloud.pdf 3D Wolken]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Paper über generieren und rendern von 3 dimensionalen Wolken inklusive Schatten und Lichtstrahlen. Ich hab nur den Lichtstahlen-Algorithmus ausprobiert. Saulangsam aber sehr einfach zu implementieren. Einen Blick ist es auf jeden Fall wert. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.geocities.com/ngdash/whitepapers/skydomecolor.html Skydome]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Wenn man mal schnell gute Farben für seinen Skydome braucht... &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Terrain===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_geomipmaps.shtml FlipCode]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Artikel zu Geomipmaping. Zummindest hab ich es hier zum ersten mal gesehen. Und es funzt ganz gut. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.vterrain.org Virtual Terrain Project]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Seite mit Links und Artikeln zu allem, was etwas mit Terrainrendering zu tun hat.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sonstiges===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[Materialsammlung]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Sammlung von gängigen Parametern für [[glMaterial]] hier im Wiki.&lt;br /&gt;
|-&lt;br /&gt;
|[http://freespace.virgin.net/hugo.elias/radiosity/radiosity.htm Radiosity]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Erklährt sehr schön die Funktionsweise von Radiosity, liefert Beispielcodes und ist recht gut illustriert.&lt;br /&gt;
|-&lt;br /&gt;
|[http://legion.gibbering.net/projectx/paper/shadow%20mapping/ Shadowmapping]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt das Trapezoidal Shadow Mapping - Verfahren für gerichte Lichter.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_generatingnames.shtml Namensgenerator]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Per Zufallsgenrator Namen erzeugen, und nie wieder kreativ werden müssen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.paulsprojects.net/tutorials/simplebump/simplebump.html Bumpmapping]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Bumpmapping auf Lowend-Grakas. Damals war Bumpmapping noch was ganz tolles... &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.paulsprojects.net/opengl/dpreflect/dpreflect.html Dot Product Reflect]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|zwar nur ne Demo, aber wenn man schon immer mal mit EMBM das Wasser aus Morrowind nachproggen wollte... &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Beispiele/Demos mit Quelltext ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.delphigl.de DelphiGL.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier finden sich besonders eindrucksvolle Newton Physik Demos. Meißtens sogar mit Quelltext.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.shadow3d.de.vu/ Shadow 3D]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier finden sich zwei Demos wie man Quake 3 Modelle lädt und eine glSlang Demo&lt;br /&gt;
|-&lt;br /&gt;
|[[Shadersammlung]] im DGL Wiki&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier findet man freie Shadersourcen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.humus.name Humus]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Diverse eindrucksvolle Demos zu verschiedenen Techniken, häufig mit Quelltext in C (teilweise OpenGL / DirectX)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== weitere Links ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www-user.tu-chemnitz.de/~pester/Lehre/CompGeo.pdf CompGeo.pdf]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Script &amp;quot;Einführung in die Computergeometrie&amp;quot; von Dr. Pester (TU-Chemnitz). Ideales Nachschlagewerk für die Mathematik die einem bei der Grafikprogrammierung so begegnet.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.robsite.de/ robsite.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Auf dieser riesigen Seite finden sich auch viele weitere Links über verschiedene Themen der 3D Programmierung.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dlinks.com/links.cfm?categoryid=3&amp;amp;subcategoryid=21 3dlinks.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Diese Seite hat es sich zur Hauptaufgabe gemacht Links auf Seiten mit dem Thema 3D zu sammeln.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.two-kings.de/links.html two-kings.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Sammlung diverser interessanter Links, vorallem auf Themen im gamedev-Forum verweisend.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.delgine.com Delgine.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Heimat des freien 3D Modellers &amp;quot;DeleD&amp;quot;, welcher in Delphi programmiert ist. Ihr findet dort auch Modellpackete, Texturpackete, Plugins und Hilfe bei der Programmierung von Delphi und OpenGL.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Spieleentwicklung =&lt;br /&gt;
&lt;br /&gt;
==Allgemein==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.spieleprogrammierung.net/ Spieleprogrammierung - OpenGL - GLSL - OpenAL - KI - Animation - Spielephysik]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr Artikel, Tutorials und Programmbeispiele rund um das Thema Spieleprogrammierung. Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://graphics-and-physics-framework.spieleprogrammierung.net/ OpenGL Graphics And Physics Framework]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr ein frei verfügbares OpenGL basiertes Grafik und Physik Framework (LGPL-Lizenz) samt zugehöriger Probammbeispiele. Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://audio-framework.spieleprogrammierung.net/ OpenAL Audio Framework]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr ein frei verfügbares OpenAL Audio Framework (LGPL-Lizenz) samt zugehöriger Probammbeispiele. Unterstützt werden 3D Sounds, EFX (EAX Alternative) Reverb Effekte sowie Audio Streaming (Music and Voices). Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://spieleentwicklung-im-web.spieleprogrammierung.net/ Spieleentwicklung im Web]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr Links (E-Books, Präsentationen, wissenschaftliche Arbeiten und Tutorials) zu verschiedenen Themengebieten der Spieleentwicklung.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Kopierschutz==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://inner-smile.com/nocrack.phtml Inner-Smile.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Seite mit Gedanken zum Thema &amp;quot;Wie schütze ich meine Programme vor Crackern&amp;quot;. Falls die Seite nicht erreichbar ist hat Google noch ne [http://www.google.com/search?q=cache:hpqPT5G4WB0J:www.inner-smile.com/nocrack.phtml+http://inner-smile.com/nocrack.phtml&amp;amp;hl=de&amp;amp;gl=de&amp;amp;ct=clnk&amp;amp;cd=1 Version im Archiv].&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Künstliche Intelligenz ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.kbs.uni-hannover.de/Lehre/KI2/Presentationen/presentation9798/esprit/spieltheorie/spieltheorie.html Uni-Hannover - Spieltheorie]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Artikel über die Grundlagen von KI in Spielen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.robsite.de/tutorials.php?tut=ki Robsite KI-Tutorials]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Sammlung von Texten zum Thema KI in Spielen. Beispiele sind meist in C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://ai-depot.com/ AI-Depot.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Seite die sich ausschließlich mit KI in Spielen beschäftigt.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ai-junkie.com/links.html AI-Junkie.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Linkseite mit vielen KI relevanten Links. Die Seite AI-Junie selbst behandelt auch viele Themen rund um KI.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.aiwisdom.com/ AIWisdom.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Seite die sich mit KIs in Spielen beschäftigt und sich zum Ziel gesetzt hat, alle Artikel zum Thema zu finden und zu Katalogisieren. Es gibt hier auch Artikel über die KIs bestehender Spiele.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.aiguru.com/ AIGuru.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Newsseite zum Thema KI, Künstliches Leben, Hiernforschung, Robotik, Nanotechnologie - Halt alles was Spass macht.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.generation5.org/ Generation5.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Seite über KI, Robotik, etc. . Leider scheint die Seite Probleme zu haben regelmäßig aktualisiert zu werden. Aber zumindest sollte man einige Artikel finden. Die werden ja nicht schlecht.&lt;br /&gt;
|-&lt;br /&gt;
|www.gameai.com&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|''Wurde Januar 2010 als down gemeldet. Weiss irgendwer etwas genaueres?'' Seite zum Thema KI in Spielen. Soll wohl einen gewissen Stellenwert in der AI-Szene haben.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www-i1.informatik.rwth-aachen.de/~algorithmus/algo19.php Algorithmus der Woche - Informatikjahr 2006]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Vielleicht schon etwas älter aber doch eine gute Anleitung um eine einfache Schach-KI zu erstellen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Ressourcen =&lt;br /&gt;
In dieser Gruppe finden sich Links um die Ressourcen für Eure Projekte zu erstellen.&lt;br /&gt;
&lt;br /&gt;
== Texturen / 2D-Grafiken ==&lt;br /&gt;
&lt;br /&gt;
=== Texturerstellung ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://3d.diehlsworld.de/textures/index.htm 3d.diehlsworld.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet ihr kurze aber inhaltlich reiche Tutorials zu der Frage &amp;quot;Wie erstelle ich XXXXX-Texturen&amp;quot;. Dabei reicht die Palette von Untergrundtexturen wie Gras, Sand , Fels und Wasser (und Kombinationen dieser) bis hin zu Blitzen und Partikeln. Als Programm wird hier Photoshop verwendet.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gimps.de/gimp/textur-muster/ gimps.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Schritt für Schritt Anleitungen wie man mit Gimp verschiedene Texturen erstellt.&lt;br /&gt;
|-&lt;br /&gt;
|[http://cbt.k090999.de/gimp.php#texturen k090999.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Gimptutorials zum Erstellen verschiedene Texturen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Modelle / 3D-Grafiken ==&lt;br /&gt;
&lt;br /&gt;
=== Blender ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://blendpolis.de/f/viewtopic.php?t=5786 Blendpolis]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Ein Thread im Forum von [http://blendpolis.de Blendpolis] in dem '''sehr''' viele Tutorials aufgelistet sind&lt;br /&gt;
|-&lt;br /&gt;
|[http://blendpolis.de/f/article_cat.php?fldAuto=7 Blendpolis]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Eigentliche Tutorial Seite von [http://blendpolis.de Blendpolis] die Auswahl ist hier aber nicht so groß&lt;br /&gt;
|-&lt;br /&gt;
|[http://wikivid.com/index.php/Blender Blender at wikivid.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Linksammlung von Blender Video Tutorials&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.blender.org/education-help/tutorials/getting-started/ blender3d.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Auch die Heimatseite von Blender bietet viele Tutorials unter anderm auch Video Tuorials&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.Blenderunderground.com Blenderunderground]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| '''sehr gute''' Video-Tutorials&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sounds ==&lt;br /&gt;
&lt;br /&gt;
===Musik===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.jamendo.com/ Jamendo.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Viele Künstler stellen hier ihre Alben unter einer Creative Commons Lizenz online. Man kann dort die Künstler auch kontaktieren und fragen ob man ihre Musik nutzen kann. Taugt außerdem als Radio! ;)&lt;br /&gt;
|-&lt;br /&gt;
|[http://incompetech.com/m/c/royalty-free/ Incompetech.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Viele sehr schön gemacht instrumentale Musik aus allen möglichen Genres. Sie ist frei verwenderbar, wenn man den Macher der Musik (Kevin MacLeod) in seinem Programm erwähnt. Aber das hat er auch verdient. Folgende Programme nutzen beispielsweise (auch) Musik von incompetech.com:&lt;br /&gt;
* OpenParty&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Soundeffekte===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.freesound.org/ freesound.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Diverse Sounds unter [http://www.creativecommons.org/ CreativeCommons] Lizenzen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Soundprogramme===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://audacity.sourceforge.net/?lang=de Sourceforgeseite von Audacity]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein einfaches, freies Programm um Sounddateien zu bearbeiten. Man kann es auch nutzen um Soundeffekte neu zu erstellen, indem man z.B. ein Geräusch mit dem Mikrofon aufnimmt und einige Effekt anwendet, um es passender und nicht mehr aufgenommen klingen zu lassen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://lmms.sourceforge.net/ LMMS]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|LMMS (Linux MultiMedia Studio) ist ein OpenSource+Freeware Composer-Programm ähnlich zum bekannteren aber auch teuren CuBase(r). Trotz des Namens auch für Windows erhältlich.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Link&amp;diff=25335</id>
		<title>Link</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Link&amp;diff=25335"/>
				<updated>2011-08-13T17:43:53Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: Unvollständigen Upload reparieren (1/2)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
!!!!!!!! NUTZT DIESE TABELLE ALS VORLAGE FÜR WEITERE LINKTABELLEN !!!!!!!&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[Link]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[Link]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Linksammlung soll allgemeine Links zu unterschiedlichen Themen bieten, die mit der Multimediaentwicklung zu tun haben.&lt;br /&gt;
{{Hinweis|Vielleicht ist eine Zusammenführung mit [[Tool]] sinnvoll!}}&lt;br /&gt;
{{Hinweis|Vielleicht ist eine Aufteilung in Unterseiten sinnvoll (möglicherweise mit Kategorien)}}&lt;br /&gt;
&lt;br /&gt;
= Entwicklung mit OpenGL =&lt;br /&gt;
&lt;br /&gt;
== Hardwareinfos ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://delphi3d.net/hardware/listreports.php OpenGL Hardware Registry - Hardwareübersicht]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Datenbank aller Grafikkarten die in der Harware Registry vorhanden sind. Die einzelnen Artikel enthalten Infos darüber, welche Extensions von der Grafikkarte unterstützt werden.&lt;br /&gt;
|-&lt;br /&gt;
|[http://delphi3d.net/hardware/allexts.php OpenGL Hardware Registry - Extensionübersicht]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Datenbank aller Extensions die in der Harware Registry vorhanden sind. Die einzelnen Artikel enthalten Infos darüber, welche Grafikkarten die entsprechende Extension unterstützen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
||[[Tutorial|DGL Wiki - Tutorial]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|DelphiGL.com ist Betreiber dieses Wikis und stellt eine Vielzahl Tutorials mit Schwehrpunkt OpenGL zur Verfügung. &lt;br /&gt;
Neben Tutorials für Einsteiger und OpenGL Anfänger gibt es auch fortgeschrittene Themen wie Shader oder Partikelsysteme.Sprache der Wahl ist hier Delphi.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.joachimrohde.com/cms/xoops/modules/articles/index.php?cat_id=1 joachimrohde.com]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet ihr deutsche Übersetzungen der bekannten NeHe Tutorials. Sprache der Wahl ist hier C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.cg.tuwien.ac.at/studentwork/VRSem96/OpenGL/ Technische Universität Wien]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[http://nehe.gamedev.net/ Nehe] &lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die berühmt berüchtigten NeHe Tutorials sind eine umfangreiche Sammlung an Tutorials zum Thema OpenGL. Von Anfängertutorials bis hin zu komplexen Effekten wird alles behandelt. Sprache der Wahl ist hier C++. (Eine Übersetzung der NeHe Tutorials findet ihr bei Joachim Rhode (siehe oben). )&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.sulaco.co.za/tut.htm sulaco.co.za] &lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| OpenGL Beispiele in Delphi&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenGL Funktionen ==&lt;br /&gt;
&lt;br /&gt;
=== GL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GL|DGL Wiki - Kategorie GL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten OpenGL Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL.tar.gz OpenGL.org - Orginal Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die Orginalspezifikationen der OpenGL 1.0 und OpenGL 1.1 Befehle. (Diese HTML-Dokumente sind nicht Copy&amp;amp;Paste freundlich, da sie vermutlich automatisch aus vorhandenen Dateien (Postscript) erzeugt wurden.)&lt;br /&gt;
|-&lt;br /&gt;
|[http://developer.3dlabs.com/documents/glmanpage_index.htm 3dLabs]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die Orginalspezifikationen der OpenGL 1.0 und OpenGL 1.1 Befehle.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von Englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glfunc01_4f03.asp MSDN von Microsoft]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|OpenGL Dokumentation in der MSDN. Die Erklärung der MSDN sind meist keine reinen Kopien der Orginalspezifikationen, sondern enthalten hin und wieder auch zusätzliche Informationen, oder formulieren Texte auf verständlichere Art und Weise.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLU ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GLU|DGL Wiki - Kategorie GLU]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten GLU Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glu/ OpenGL.org - Orginal Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Orginalspezifikationen für die GLU Befehle. (Diese HTML-Dokumente sind nicht Copy&amp;amp;Paste freundlich, da sie vermutlich automatisch aus vorhandenen Dateien (Postscript) erzeugt wurden.)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glufnc01_0e43.asp MSDN von Microsoft]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|GLU Dokumentation in der MSDN. Die Erklärung der MSDN sind meist keine reinen Kopien der Orginalspezifikationen, sondern enthalten hin und wieder auch zusätzliche Informationen, oder formulieren Texte auf verständlichere Art und Weise.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLX ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GLX|DGL Wiki - Kategorie GLX]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten GLX Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glx/ OpenGL.org - Orginal  Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Orgninalspezifikationen der GLX Befehle bei OpenGL.org.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von Englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== WGL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:WGL|DGL Wiki - Kategorie WGL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Wiki-Kategorie die alle übersetzten WGL Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://developer.3dlabs.com/documents/wglmanpage_index.htm 3dLabs]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung einiger WGL Befehlsspezifikationen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLUT ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://freeglut.sourceforge.net/docs/api.php The freeglut Projekt]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Englischsprachige Dokumentation zum OpenGL Utility Toolkit kurz GLUT.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SDL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:SDL|DGL Wiki - Kategorie SDL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Übersicht aller auf die SDL bezogenen Artikel hier im Wiki. Darunter befinden sich eine Vielzahl von Übersetzungen der SDL Befehlspezifikationen. Diese können auch in der [[SDL-Funktionsübersicht]] gefunden werden.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.libsdl.org/cgi/docwiki.cgi/SDL_20API libsdl.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Das Dokumentationswiki von libSDL.org enthält die komplette Dokumenation zur SDL in englischer Sprache.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.fp.sdl.de.vu/ fp.sdl.de.vu]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Eine Webseite die speziell Informationen über die Programmierung von SDL unter Freepascal zur Verfügung stellt.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== FAQs ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[FAQ| DGL Wiki - FAQ]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein FAQ (Frequently Asked Questions = Häufig gestellte Fragen) zu DelphiGL.com und dem DGL Wiki.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dsource.de/faq/index.htm 3dsource.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein FAQ zu Fragen rund um OpenGL.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Effekte und Techniken mit OpenGL ==&lt;br /&gt;
&lt;br /&gt;
===Glow===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamasutra.com/view/feature/2107/realtime_glow.php Gamasutra]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt, wie man mit Hilfe von Shader(hier DirectX Shader) den Gloweffekt in Realtime umsetzt. Dabei wird erst die Technik dahinter erklährt, und dann wie man sie Schritt für Schritt umsetzt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://collective.valve-erc.com/index.php?go=tron1 valve-erc.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Schritt für Schritt Anleitung, wie man mit Hilfe von Cg in OpenGL den Glow Effekt realisieren kann &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===HDR===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/columns/hardcore/hdrrendering/ gamedev.net]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Hier wird sehr kurz eingeleitet, was HDR Rendering überhaupt ist, dann wird der Aufbau des *.hdr Formats erläutert, und dann geht es schon von 0 auf 100 zum Programmieren. Erklährungen gibt es kaum, dafür werden fertige Shader(für DirectX) geboten. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/reference/articles/article2208.asp gamedev.net]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt auch nur etwas kurz das HDR Verfahren, jedoch mit mehr mathematischen Hintergrund in Sachen Tonemapping. Beispielcode für Tonemapping in C++ liegt bei. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===BSP Bäume===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dtechdev.com/tutorials/leafbsp/3dbsptrees.html 3dtechdev.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Das beste Dokument überhaupt, für allem die selber BSP Bäume compilieren möchte. Ist belegt mit sehr viel Grafik. Erst beginnt er das Prinzip allgemein zum umschreiben, dann wird alles genau erläutert, und mit verständlichen Pseudocode untermalt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dtechdev.com/tutorials/illegalgeometry/illegalgeometrytut.html 3dtechdev.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Nicht ganz so gut geworden, wie sein erstes Tutorial, aber erklährt auch sehr gut, wie man illegale Geometrie aufspürt und beseitigt. Wieder mit Grafiken und Pseudocodes verständlich belegt. Hiermit kann man seinem Map-Compiler den letzten Schliff verleien. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/reference/articles/article981.asp Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Von Michael Abrash, dürfte der ''Erfinder'' von Quake sein. Naja, meine Englischkenntnisse reichen hier nicht ganz aus, um den Text zu verstehen. Ist etwas umständlich geschrieben. Dafür mit Grafiken unterlegt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.zfx-online.de/Tutorials.php?ID=11 Part 1 - Allgemein]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Einzigste deutsche Referenz zu BSP Bäumen, dafür Daumen hoch. Ist aber nicht das Wahre: schlechter C Code, und ich hatte auch nicht den Einduck, das er die Theorie zu diesem Thema bis in die Tiefe verstanden hat(oder er wollte es nicht zu akademisch Erklähren oO). Aber ein guter Einstieg in dieses Thema. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.zfx-online.de/Tutorials.php?ID=13 Part 2 - Kollision und PVS]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.cs.uwec.edu/~stevende/cs455/programs/GameTutorials%20-%20Quake%203%20BSP%20Format.htm Quake3 *.bsp Format]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die beste Dokumentation für das BSP Format, die ich gefunden habe, besser als den Quake3 Sourcecode zu durchforsten. Leider etwas magere Eklährung zu wichtigen Themen wie Patches(Curved Surfaces). Ich pers. hatte jetzt 1 1/2 Wochen gebraucht, um das *.bsp Format vollständig zu verstehen. Ist aber anscheinend die beste Format Dokumentation im Netz. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_q2bsp.shtml Quake2 *.bsp Format]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Kann auch nur soviel sagen, wie beim Link zuvor. Es fehlen hier auch zum Teil Informationen. Man muss halt viel ausprobieren, und sich den Quake 2 Source zu Herzen nehmen, damit man es versteht. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Himmel &amp;amp; Wolken===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/community/forums/topic.asp?topic_id=86024 Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Guter Thread mit vielen Anregungen und Links. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/community/forums/topic.asp?topic_id=135654 Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Hier wird die Diskussion zum obigen Link weitergeführt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://freespace.virgin.net/hugo.elias/models/m_clouds.htm Plasma]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine nette Idee um Plasma in Echtzeit zu generieren, und zu verändern. Leider nichts zum Shading. &lt;br /&gt;
|-&lt;br /&gt;
|[http://nis-lab.is.s.u-tokyo.ac.jp/~nis/cdrom/sig00_cloud.pdf 3D Wolken]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Paper über generieren und rendern von 3 dimensionalen Wolken inklusive Schatten und Lichtstrahlen. Ich hab nur den Lichtstahlen-Algorithmus ausprobiert. Saulangsam aber sehr einfach zu implementieren. Einen Blick ist es auf jeden Fall wert. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.geocities.com/ngdash/whitepapers/skydomecolor.html Skydome]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Wenn man mal schnell gute Farben für seinen Skydome braucht... &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Terrain===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_geomipmaps.shtml FlipCode]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Artikel zu Geomipmaping. Zummindest hab ich es hier zum ersten mal gesehen. Und es funzt ganz gut. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.vterrain.org Virtual Terrain Project]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Seite mit Links und Artikeln zu allem, was etwas mit Terrainrendering zu tun hat.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sonstiges===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[Materialsammlung]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Sammlung von gängigen Parametern für [[glMaterial]] hier im Wiki.&lt;br /&gt;
|-&lt;br /&gt;
|[http://freespace.virgin.net/hugo.elias/radiosity/radiosity.htm Radiosity]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Erklährt sehr schön die Funktionsweise von Radiosity, liefert Beispielcodes und ist recht gut illustriert.&lt;br /&gt;
|-&lt;br /&gt;
|[http://legion.gibbering.net/projectx/paper/shadow%20mapping/ Shadowmapping]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt das Trapezoidal Shadow Mapping - Verfahren für gerichte Lichter.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_generatingnames.shtml Namensgenerator]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Per Zufallsgenrator Namen erzeugen, und nie wieder kreativ werden müssen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.paulsprojects.net/tutorials/simplebump/simplebump.html Bumpmapping]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Bumpmapping auf Lowend-Grakas. Damals war Bumpmapping noch was ganz tolles... &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.paulsprojects.net/opengl/dpreflect/dpreflect.html Dot Product Reflect]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|zwar nur ne Demo, aber wenn man schon immer mal mit EMBM das Wasser aus Morrowind nachproggen wollte... &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Beispiele/Demos mit Quelltext ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.delphigl.de DelphiGL.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier finden sich besonders eindrucksvolle Newton Physik Demos. Meißtens sogar mit Quelltext.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.shadow3d.de.vu/ Shadow 3D]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier finden sich zwei Demos wie man Quake 3 Modelle lädt und eine glSlang Demo&lt;br /&gt;
|-&lt;br /&gt;
|[[Shadersammlung]] im DGL Wiki&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier findet man freie Shadersourcen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.humus.name Humus]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Diverse eindrucksvolle Demos zu verschiedenen Techniken, häufig mit Quelltext in C (teilweise OpenGL / DirectX)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== weitere Links ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www-user.tu-chemnitz.de/~pester/Lehre/CompGeo.pdf CompGeo.pdf]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Script &amp;quot;Einführung in die Computergeometrie&amp;quot; von Dr. Pester (TU-Chemnitz). Ideales Nachschlagewerk für die Mathematik die einem bei der Grafikprogrammierung so begegnet.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.robsite.de/ robsite.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Auf dieser riesigen Seite finden sich auch viele weitere Links über verschiedene Themen der 3D Programmierung.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dlinks.com/links.cfm?categoryid=3&amp;amp;subcategoryid=21 3dlinks.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Diese Seite hat es sich zur Hauptaufgabe gemacht Links auf Seiten mit dem Thema 3D zu sammeln.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.two-kings.de/links.html two-kings.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Sammlung diverser interessanter Links, vorallem auf Themen im gamedev-Forum verweisend.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.delgine.com Delgine.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Heimat des freien 3D Modellers &amp;quot;DeleD&amp;quot;, welcher in Delphi programmiert ist. Ihr findet dort auch Modellpackete, Texturpackete, Plugins und Hilfe bei der Programmierung von Delphi und OpenGL.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Spieleentwicklung =&lt;br /&gt;
&lt;br /&gt;
==Allgemein==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.spieleprogrammierung.net/ Spieleprogrammierung - OpenGL - GLSL - OpenAL - KI - Animation - Spielephysik]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr Artikel, Tutorials und Programmbeispiele rund um das Thema Spieleprogrammierung. Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://graphics-and-physics-framework.spieleprogrammierung.net/ OpenGL Graphics And Physics Framework]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr ein frei verfügbares OpenGL basiertes Grafik und Physik Framework (LGPL-Lizenz) samt zugehöriger Probammbeispiele. Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://audio-framework.spieleprogrammierung.net/ OpenAL Audio Framework]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr ein frei verfügbares OpenAL Audio Framework (LGPL-Lizenz) samt zugehöriger Probammbeispiele. Unterstützt werden 3D Sounds, EFX (EAX Alternative) Reverb Effekte sowie Audio Streaming (Music and Voices). Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://spieleentwicklung-im-web.spieleprogrammierung.net/ Spieleentwicklung im Web]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr Links (E-Books, Präsentationen, wissenschaftliche Arbeiten und Tutorials) zu verschiedenen Themengebieten der Spieleentwicklung.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Kopierschutz==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://inner-smile.com/nocrack.phtml Inner-Smile.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Seite mit Gedanken zum Thema &amp;quot;Wie schütze ich meine Programme vor Crackern&amp;quot;. Falls die Seite nicht erreichbar ist hat Google noch ne [http://www.google.com/search?q=cache:hpqPT5G4WB0J:www.inner-smile.com/nocrack.phtml+http://inner-smile.com/nocrack.phtml&amp;amp;hl=de&amp;amp;gl=de&amp;amp;ct=clnk&amp;amp;cd=1 Version im Archiv].&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Künstliche Intelligenz ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.kbs.uni-hannover.de/Lehre/KI2/Presentationen/presentation9798/esprit/spieltheorie/spieltheorie.html Uni-Hannover - Spieltheorie]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Artikel über die Grundlagen von KI in Spielen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.robsite.de/tutorials.php?tut=ki Robsite KI-Tutorials]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Sammlung von Texten zum Thema KI in Spielen. Beispiele sind meist in C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://ai-depot.com/ AI-Depot.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Seite die sich ausschließlich mit KI in Spielen beschäftigt.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ai-junkie.com/links.html AI-Junkie.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Linkseite mit vielen KI relevanten Links. Die Seite AI-Junie selbst behandelt auch viele Themen rund um KI.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.aiwisdom.com/ AIWisdom.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Seite die sich mit KIs in Spielen beschäftigt und sich zum Ziel gesetzt hat, alle Artikel zum Thema zu finden und zu Katalogisieren. Es gibt hier auch Artikel über die KIs bestehender Spiele.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.aiguru.com/ AIGuru.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Newsseite zum Thema KI, Künstliches Leben, Hiernforschung, Robotik, Nanotechnologie - Halt alles was Spass macht.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.generation5.org/ Generation5.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Seite über KI, Robotik, etc. . Leider scheint die Seite Probleme zu haben regelmäßig aktualisiert zu werden. Aber zumindest sollte man einige Artikel finden. Die werden ja nicht schlecht.&lt;br /&gt;
|-&lt;br /&gt;
|www.gameai.com&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|''Wurde Januar 2010 als down gemeldet. Weiss irgendwer etwas genaueres?'' Seite zum Thema KI in Spielen. Soll wohl einen gewissen Stellenwert in der AI-Szene haben.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www-i1.informatik.rwth-aachen.de/~algorithmus/algo19.php Algorithmus der Woche - Informatikjahr 2006]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Vielleicht schon etwas älter aber doch eine gute Anleitung um eine einfache Schach-KI zu erstellen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Ressourcen =&lt;br /&gt;
In dieser Gruppe finden sich Links um die Ressourcen für Eure Projekte zu erstellen.&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Link&amp;diff=25334</id>
		<title>Link</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Link&amp;diff=25334"/>
				<updated>2011-08-13T17:42:37Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: Umstrukturierung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
!!!!!!!! NUTZT DIESE TABELLE ALS VORLAGE FÜR WEITERE LINKTABELLEN !!!!!!!&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[Link]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[Link]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Linksammlung soll allgemeine Links zu unterschiedlichen Themen bieten, die mit der Multimediaentwicklung zu tun haben.&lt;br /&gt;
{{Hinweis|Vielleicht ist eine Zusammenführung mit [[Tool]] sinnvoll!}}&lt;br /&gt;
{{Hinweis|Vielleicht ist eine Aufteilung in Unterseiten sinnvoll (möglicherweise mit Kategorien)}}&lt;br /&gt;
&lt;br /&gt;
= Entwicklung mit OpenGL =&lt;br /&gt;
&lt;br /&gt;
== Hardwareinfos ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://delphi3d.net/hardware/listreports.php OpenGL Hardware Registry - Hardwareübersicht]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Datenbank aller Grafikkarten die in der Harware Registry vorhanden sind. Die einzelnen Artikel enthalten Infos darüber, welche Extensions von der Grafikkarte unterstützt werden.&lt;br /&gt;
|-&lt;br /&gt;
|[http://delphi3d.net/hardware/allexts.php OpenGL Hardware Registry - Extensionübersicht]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Datenbank aller Extensions die in der Harware Registry vorhanden sind. Die einzelnen Artikel enthalten Infos darüber, welche Grafikkarten die entsprechende Extension unterstützen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
||[[Tutorial|DGL Wiki - Tutorial]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|DelphiGL.com ist Betreiber dieses Wikis und stellt eine Vielzahl Tutorials mit Schwehrpunkt OpenGL zur Verfügung. &lt;br /&gt;
Neben Tutorials für Einsteiger und OpenGL Anfänger gibt es auch fortgeschrittene Themen wie Shader oder Partikelsysteme.Sprache der Wahl ist hier Delphi.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.joachimrohde.com/cms/xoops/modules/articles/index.php?cat_id=1 joachimrohde.com]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet ihr deutsche Übersetzungen der bekannten NeHe Tutorials. Sprache der Wahl ist hier C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.cg.tuwien.ac.at/studentwork/VRSem96/OpenGL/ Technische Universität Wien]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[http://nehe.gamedev.net/ Nehe] &lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die berühmt berüchtigten NeHe Tutorials sind eine umfangreiche Sammlung an Tutorials zum Thema OpenGL. Von Anfängertutorials bis hin zu komplexen Effekten wird alles behandelt. Sprache der Wahl ist hier C++. (Eine Übersetzung der NeHe Tutorials findet ihr bei Joachim Rhode (siehe oben). )&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.sulaco.co.za/tut.htm sulaco.co.za] &lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| OpenGL Beispiele in Delphi&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenGL Funktionen ==&lt;br /&gt;
&lt;br /&gt;
=== GL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GL|DGL Wiki - Kategorie GL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten OpenGL Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL.tar.gz OpenGL.org - Orginal Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die Orginalspezifikationen der OpenGL 1.0 und OpenGL 1.1 Befehle. (Diese HTML-Dokumente sind nicht Copy&amp;amp;Paste freundlich, da sie vermutlich automatisch aus vorhandenen Dateien (Postscript) erzeugt wurden.)&lt;br /&gt;
|-&lt;br /&gt;
|[http://developer.3dlabs.com/documents/glmanpage_index.htm 3dLabs]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die Orginalspezifikationen der OpenGL 1.0 und OpenGL 1.1 Befehle.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von Englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glfunc01_4f03.asp MSDN von Microsoft]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|OpenGL Dokumentation in der MSDN. Die Erklärung der MSDN sind meist keine reinen Kopien der Orginalspezifikationen, sondern enthalten hin und wieder auch zusätzliche Informationen, oder formulieren Texte auf verständlichere Art und Weise.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLU ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GLU|DGL Wiki - Kategorie GLU]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten GLU Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glu/ OpenGL.org - Orginal Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Orginalspezifikationen für die GLU Befehle. (Diese HTML-Dokumente sind nicht Copy&amp;amp;Paste freundlich, da sie vermutlich automatisch aus vorhandenen Dateien (Postscript) erzeugt wurden.)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glufnc01_0e43.asp MSDN von Microsoft]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|GLU Dokumentation in der MSDN. Die Erklärung der MSDN sind meist keine reinen Kopien der Orginalspezifikationen, sondern enthalten hin und wieder auch zusätzliche Informationen, oder formulieren Texte auf verständlichere Art und Weise.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLX ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GLX|DGL Wiki - Kategorie GLX]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten GLX Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glx/ OpenGL.org - Orginal  Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Orgninalspezifikationen der GLX Befehle bei OpenGL.org.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von Englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== WGL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:WGL|DGL Wiki - Kategorie WGL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Wiki-Kategorie die alle übersetzten WGL Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://developer.3dlabs.com/documents/wglmanpage_index.htm 3dLabs]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung einiger WGL Befehlsspezifikationen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GLUT ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://freeglut.sourceforge.net/docs/api.php The freeglut Projekt]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Englischsprachige Dokumentation zum OpenGL Utility Toolkit kurz GLUT.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SDL ===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:SDL|DGL Wiki - Kategorie SDL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Übersicht aller auf die SDL bezogenen Artikel hier im Wiki. Darunter befinden sich eine Vielzahl von Übersetzungen der SDL Befehlspezifikationen. Diese können auch in der [[SDL-Funktionsübersicht]] gefunden werden.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.libsdl.org/cgi/docwiki.cgi/SDL_20API libsdl.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Das Dokumentationswiki von libSDL.org enthält die komplette Dokumenation zur SDL in englischer Sprache.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.fp.sdl.de.vu/ fp.sdl.de.vu]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Eine Webseite die speziell Informationen über die Programmierung von SDL unter Freepascal zur Verfügung stellt.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== FAQs ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[FAQ| DGL Wiki - FAQ]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein FAQ (Frequently Asked Questions = Häufig gestellte Fragen) zu DelphiGL.com und dem DGL Wiki.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dsource.de/faq/index.htm 3dsource.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein FAQ zu Fragen rund um OpenGL.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Effekte und Techniken mit OpenGL ==&lt;br /&gt;
&lt;br /&gt;
===Glow===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamasutra.com/view/feature/2107/realtime_glow.php Gamasutra]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt, wie man mit Hilfe von Shader(hier DirectX Shader) den Gloweffekt in Realtime umsetzt. Dabei wird erst die Technik dahinter erklährt, und dann wie man sie Schritt für Schritt umsetzt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://collective.valve-erc.com/index.php?go=tron1 valve-erc.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Schritt für Schritt Anleitung, wie man mit Hilfe von Cg in OpenGL den Glow Effekt realisieren kann &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===HDR===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/columns/hardcore/hdrrendering/ gamedev.net]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Hier wird sehr kurz eingeleitet, was HDR Rendering überhaupt ist, dann wird der Aufbau des *.hdr Formats erläutert, und dann geht es schon von 0 auf 100 zum Programmieren. Erklährungen gibt es kaum, dafür werden fertige Shader(für DirectX) geboten. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/reference/articles/article2208.asp gamedev.net]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt auch nur etwas kurz das HDR Verfahren, jedoch mit mehr mathematischen Hintergrund in Sachen Tonemapping. Beispielcode für Tonemapping in C++ liegt bei. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===BSP Bäume===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dtechdev.com/tutorials/leafbsp/3dbsptrees.html 3dtechdev.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Das beste Dokument überhaupt, für allem die selber BSP Bäume compilieren möchte. Ist belegt mit sehr viel Grafik. Erst beginnt er das Prinzip allgemein zum umschreiben, dann wird alles genau erläutert, und mit verständlichen Pseudocode untermalt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dtechdev.com/tutorials/illegalgeometry/illegalgeometrytut.html 3dtechdev.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Nicht ganz so gut geworden, wie sein erstes Tutorial, aber erklährt auch sehr gut, wie man illegale Geometrie aufspürt und beseitigt. Wieder mit Grafiken und Pseudocodes verständlich belegt. Hiermit kann man seinem Map-Compiler den letzten Schliff verleien. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/reference/articles/article981.asp Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Von Michael Abrash, dürfte der ''Erfinder'' von Quake sein. Naja, meine Englischkenntnisse reichen hier nicht ganz aus, um den Text zu verstehen. Ist etwas umständlich geschrieben. Dafür mit Grafiken unterlegt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.zfx-online.de/Tutorials.php?ID=11 Part 1 - Allgemein]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Einzigste deutsche Referenz zu BSP Bäumen, dafür Daumen hoch. Ist aber nicht das Wahre: schlechter C Code, und ich hatte auch nicht den Einduck, das er die Theorie zu diesem Thema bis in die Tiefe verstanden hat(oder er wollte es nicht zu akademisch Erklähren oO). Aber ein guter Einstieg in dieses Thema. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.zfx-online.de/Tutorials.php?ID=13 Part 2 - Kollision und PVS]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.cs.uwec.edu/~stevende/cs455/programs/GameTutorials%20-%20Quake%203%20BSP%20Format.htm Quake3 *.bsp Format]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die beste Dokumentation für das BSP Format, die ich gefunden habe, besser als den Quake3 Sourcecode zu durchforsten. Leider etwas magere Eklährung zu wichtigen Themen wie Patches(Curved Surfaces). Ich pers. hatte jetzt 1 1/2 Wochen gebraucht, um das *.bsp Format vollständig zu verstehen. Ist aber anscheinend die beste Format Dokumentation im Netz. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_q2bsp.shtml Quake2 *.bsp Format]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Kann auch nur soviel sagen, wie beim Link zuvor. Es fehlen hier auch zum Teil Informationen. Man muss halt viel ausprobieren, und sich den Quake 2 Source zu Herzen nehmen, damit man es versteht. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Himmel &amp;amp; Wolken===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/community/forums/topic.asp?topic_id=86024 Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Guter Thread mit vielen Anregungen und Links. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/community/forums/topic.asp?topic_id=135654 Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Hier wird die Diskussion zum obigen Link weitergeführt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://freespace.virgin.net/hugo.elias/models/m_clouds.htm Plasma]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine nette Idee um Plasma in Echtzeit zu generieren, und zu verändern. Leider nichts zum Shading. &lt;br /&gt;
|-&lt;br /&gt;
|[http://nis-lab.is.s.u-tokyo.ac.jp/~nis/cdrom/sig00_cloud.pdf 3D Wolken]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Paper über generieren und rendern von 3 dimensionalen Wolken inklusive Schatten und Lichtstrahlen. Ich hab nur den Lichtstahlen-Algorithmus ausprobiert. Saulangsam aber sehr einfach zu implementieren. Einen Blick ist es auf jeden Fall wert. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.geocities.com/ngdash/whitepapers/skydomecolor.html Skydome]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Wenn man mal schnell gute Farben für seinen Skydome braucht... &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Terrain===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_geomipmaps.shtml FlipCode]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Artikel zu Geomipmaping. Zummindest hab ich es hier zum ersten mal gesehen. Und es funzt ganz gut. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.vterrain.org Virtual Terrain Project]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Seite mit Links und Artikeln zu allem, was etwas mit Terrainrendering zu tun hat.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sonstiges===&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[Materialsammlung]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Sammlung von gängigen Parametern für [[glMaterial]] hier im Wiki.&lt;br /&gt;
|-&lt;br /&gt;
|[http://freespace.virgin.net/hugo.elias/radiosity/radiosity.htm Radiosity]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Erklährt sehr schön die Funktionsweise von Radiosity, liefert Beispielcodes und ist recht gut illustriert.&lt;br /&gt;
|-&lt;br /&gt;
|[http://legion.gibbering.net/projectx/paper/shadow%20mapping/ Shadowmapping]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt das Trapezoidal Shadow Mapping - Verfahren für gerichte Lichter.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_generatingnames.shtml Namensgenerator]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Per Zufallsgenrator Namen erzeugen, und nie wieder kreativ werden müssen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.paulsprojects.net/tutorials/simplebump/simplebump.html Bumpmapping]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Bumpmapping auf Lowend-Grakas. Damals war Bumpmapping noch was ganz tolles... &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.paulsprojects.net/opengl/dpreflect/dpreflect.html Dot Product Reflect]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|zwar nur ne Demo, aber wenn man schon immer mal mit EMBM das Wasser aus Morrowind nachproggen wollte... &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Beispiele/Demos mit Quelltext ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.delphigl.de DelphiGL.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier finden sich besonders eindrucksvolle Newton Physik Demos. Meißtens sogar mit Quelltext.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.shadow3d.de.vu/ Shadow 3D]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier finden sich zwei Demos wie man Quake 3 Modelle lädt und eine glSlang Demo&lt;br /&gt;
|-&lt;br /&gt;
|[[Shadersammlung]] im DGL Wiki&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier findet man freie Shadersourcen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.humus.name Humus]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Diverse eindrucksvolle Demos zu verschiedenen Techniken, häufig mit Quelltext in C (teilweise OpenGL / DirectX)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== weitere Links ==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www-user.tu-chemnitz.de/~pester/Lehre/CompGeo.pdf CompGeo.pdf]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Script &amp;quot;Einführung in die Computergeometrie&amp;quot; von Dr. Pester (TU-Chemnitz). Ideales Nachschlagewerk für die Mathematik die einem bei der Grafikprogrammierung so begegnet.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.robsite.de/ robsite.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Auf dieser riesigen Seite finden sich auch viele weitere Links über verschiedene Themen der 3D Programmierung.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dlinks.com/links.cfm?categoryid=3&amp;amp;subcategoryid=21 3dlinks.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Diese Seite hat es sich zur Hauptaufgabe gemacht Links auf Seiten mit dem Thema 3D zu sammeln.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.two-kings.de/links.html two-kings.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Sammlung diverser interessanter Links, vorallem auf Themen im gamedev-Forum verweisend.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.delgine.com Delgine.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Heimat des freien 3D Modellers &amp;quot;DeleD&amp;quot;, welcher in Delphi programmiert ist. Ihr findet dort auch Modellpackete, Texturpackete, Plugins und Hilfe bei der Programmierung von Delphi und OpenGL.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Spieleentwicklung =&lt;br /&gt;
&lt;br /&gt;
==Allgemein==&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.spieleprogrammierung.net/ Spieleprogrammierung - OpenGL - GLSL - OpenAL - KI - Animation - Spielephysik]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr Artikel, Tutorials und Programmbeispiele rund um das Thema Spieleprogrammierung. Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://graphics-and-physics-framework.spieleprogrammierung.net/ OpenGL Graphics And Physics Framework]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr ein frei verfügbares OpenGL basiertes Grafik und Physik Framework (LGPL-Lizenz) samt zugehöriger Probammbeispiele. Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://audio-framework.spieleprogrammierung.net/ OpenAL Audio Framework]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr ein frei verfügbares OpenAL Audio Framework (LGPL-Lizenz) samt zugehöriger Probammbeispiel&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Link&amp;diff=25063</id>
		<title>Link</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Link&amp;diff=25063"/>
				<updated>2011-03-04T15:24:20Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: /* Soundprogramme */ LMMS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
!!!!!!!! NUTZT DIESE TABELLE ALS VORLAGE FÜR WEITERE LINKTABELLEN !!!!!!!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{|{{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[Link]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[Link]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Links die mit Grafik/OpenGL zu tun haben =&lt;br /&gt;
Hier finden Sie eine Übersicht von Links. &lt;br /&gt;
&lt;br /&gt;
*Weitere Navigations Links findet Sie unter [[DGL Wiki:Portal]]&lt;br /&gt;
*Links zu Tools oder Programmen finden Sie unter [[Tool]]s&lt;br /&gt;
&lt;br /&gt;
== Hardwareinfos ==&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://delphi3d.net/hardware/listreports.php OpenGL Hardware Registry - Hardwareübersicht]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Datenbank aller Grafikkarten die in der Harware Registry vorhanden sind. Die einzelnen Artikel enthalten Infos darüber, welche Extensions von der Grafikkarte unterstützt werden.&lt;br /&gt;
|-&lt;br /&gt;
|[http://delphi3d.net/hardware/allexts.php OpenGL Hardware Registry - Extensionübersicht]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Datenbank aller Extensions die in der Harware Registry vorhanden sind. Die einzelnen Artikel enthalten Infos darüber, welche Grafikkarten die entsprechende Extension unterstützen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
&lt;br /&gt;
=== OpenGL ===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
||[[Tutorial|DGL Wiki - Tutorial]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|DelphiGL.com ist Betreiber dieses Wikis und stellt eine Vielzahl Tutorials mit Schwehrpunkt OpenGL zur Verfügung. &lt;br /&gt;
Neben Tutorials für Einsteiger und OpenGL Anfänger gibt es auch fortgeschrittene Themen wie Shader oder Partikelsysteme.Sprache der Wahl ist hier Delphi.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.joachimrohde.com/cms/xoops/modules/articles/index.php?cat_id=1 joachimrohde.com]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet ihr deutsche Übersetzungen der bekannten NeHe Tutorials. Sprache der Wahl ist hier C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.cg.tuwien.ac.at/studentwork/VRSem96/OpenGL/ Technische Universität Wien]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[http://nehe.gamedev.net/ Nehe] &lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die berühmt berüchtigten NeHe Tutorials sind eine umfangreiche Sammlung an Tutorials zum Thema OpenGL. Von Anfängertutorials bis hin zu komplexen Effekten wird alles behandelt. Sprache der Wahl ist hier C++. (Eine Übersetzung der NeHe Tutorials findet ihr bei Joachim Rhode (siehe oben). )&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.sulaco.co.za/tut.htm sulaco.co.za] &lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| OpenGL Beispiele in Delphi&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Textur Erstellung ===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://3d.diehlsworld.de/textures/index.htm 3d.diehlsworld.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet ihr kurze aber inhaltlich reiche Tutorials zu der Frage &amp;quot;Wie erstelle ich XXXXX-Texturen&amp;quot;. Dabei reicht die Palette von Untergrundtexturen wie Gras, Sand , Fels und Wasser (und Kombinationen dieser) bis hin zu Blitzen und Partikeln. Als Programm wird hier Photoshop verwendet.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gimps.de/gimp/textur-muster/ gimps.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Schritt für Schritt Anleitungen wie man mit Gimp verschiedene Texturen erstellt.&lt;br /&gt;
|-&lt;br /&gt;
|[http://cbt.k090999.de/gimp.php#texturen k090999.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Gimptutorials zum Erstellen verschiedene Texturen.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Blender ===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://blendpolis.de/f/viewtopic.php?t=5786 Blendpolis]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Ein Thread im Forum von [http://blendpolis.de Blendpolis] in dem '''sehr''' viele Tutorials aufgelistet sind&lt;br /&gt;
|-&lt;br /&gt;
|[http://blendpolis.de/f/article_cat.php?fldAuto=7 Blendpolis]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Eigentliche Tutorial Seite von [http://blendpolis.de Blendpolis] die Auswahl ist hier aber nicht so groß&lt;br /&gt;
|-&lt;br /&gt;
|[http://wikivid.com/index.php/Blender Blender at wikivid.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Linksammlung von Blender Video Tutorials&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.blender.org/education-help/tutorials/getting-started/ blender3d.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Auch die Heimatseite von Blender bietet viele Tutorials unter anderm auch Video Tuorials&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.Blenderunderground.com Blenderunderground]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| '''sehr gute''' Video-Tutorials&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OpenGL Funktionen ==&lt;br /&gt;
&lt;br /&gt;
=== GL ===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GL|DGL Wiki - Kategorie GL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten OpenGL Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL.tar.gz OpenGL.org - Orginal Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die Orginalspezifikationen der OpenGL 1.0 und OpenGL 1.1 Befehle. (Diese HTML-Dokumente sind nicht Copy&amp;amp;Paste freundlich, da sie vermutlich automatisch aus vorhandenen Dateien (Postscript) erzeugt wurden.)&lt;br /&gt;
|-&lt;br /&gt;
|[http://developer.3dlabs.com/documents/glmanpage_index.htm 3dLabs]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die Orginalspezifikationen der OpenGL 1.0 und OpenGL 1.1 Befehle.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von Englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glfunc01_4f03.asp MSDN von Microsoft]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|OpenGL Dokumentation in der MSDN. Die Erklärung der MSDN sind meist keine reinen Kopien der Orginalspezifikationen, sondern enthalten hin und wieder auch zusätzliche Informationen, oder formulieren Texte auf verständlichere Art und Weise.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLU ===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GLU|DGL Wiki - Kategorie GLU]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten GLU Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glu/ OpenGL.org - Orginal Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Orginalspezifikationen für die GLU Befehle. (Diese HTML-Dokumente sind nicht Copy&amp;amp;Paste freundlich, da sie vermutlich automatisch aus vorhandenen Dateien (Postscript) erzeugt wurden.)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glufnc01_0e43.asp MSDN von Microsoft]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|GLU Dokumentation in der MSDN. Die Erklärung der MSDN sind meist keine reinen Kopien der Orginalspezifikationen, sondern enthalten hin und wieder auch zusätzliche Informationen, oder formulieren Texte auf verständlichere Art und Weise.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLX ===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GLX|DGL Wiki - Kategorie GLX]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten GLX Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glx/ OpenGL.org - Orginal  Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Orgninalspezifikationen der GLX Befehle bei OpenGL.org.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von Englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WGL ===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:WGL|DGL Wiki - Kategorie WGL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Wiki-Kategorie die alle übersetzten WGL Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://developer.3dlabs.com/documents/wglmanpage_index.htm 3dLabs]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung einiger WGL Befehlsspezifikationen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLUT ===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://freeglut.sourceforge.net/docs/api.php The freeglut Projekt]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Englischsprachige Dokumentation zum OpenGL Utility Toolkit kurz GLUT.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SDL ===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:SDL|DGL Wiki - Kategorie SDL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Übersicht aller auf die SDL bezogenen Artikel hier im Wiki. Darunter befinden sich eine Vielzahl von Übersetzungen der SDL Befehlspezifikationen. Diese können auch in der [[SDL-Funktionsübersicht]] gefunden werden.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.libsdl.org/cgi/docwiki.cgi/SDL_20API libsdl.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Das Dokumentationswiki von libSDL.org enthält die komplette Dokumenation zur SDL in englischer Sprache.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.fp.sdl.de.vu/ fp.sdl.de.vu]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Eine Webseite die speziell Informationen über die Programmierung von SDL unter Freepascal zur Verfügung stellt.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FAQs ==&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[FAQ| DGL Wiki - FAQ]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein FAQ (Frequently Asked Questions = Häufig gestellte Fragen) zu DelphiGL.com und dem DGL Wiki.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dsource.de/faq/index.htm 3dsource.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein FAQ zu Fragen rund um OpenGL.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Effekte und Techniken mit OpenGL ==&lt;br /&gt;
&lt;br /&gt;
===Glow===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamasutra.com/view/feature/2107/realtime_glow.php Gamasutra]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt, wie man mit Hilfe von Shader(hier DirectX Shader) den Gloweffekt in Realtime umsetzt. Dabei wird erst die Technik dahinter erklährt, und dann wie man sie Schritt für Schritt umsetzt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://collective.valve-erc.com/index.php?go=tron1 valve-erc.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Schritt für Schritt Anleitung, wie man mit Hilfe von Cg in OpenGL den Glow Effekt realisieren kann &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===HDR===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/columns/hardcore/hdrrendering/ gamedev.net]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Hier wird sehr kurz eingeleitet, was HDR Rendering überhaupt ist, dann wird der Aufbau des *.hdr Formats erläutert, und dann geht es schon von 0 auf 100 zum Programmieren. Erklährungen gibt es kaum, dafür werden fertige Shader(für DirectX) geboten. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/reference/articles/article2208.asp gamedev.net]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt auch nur etwas kurz das HDR Verfahren, jedoch mit mehr mathematischen Hintergrund in Sachen Tonemapping. Beispielcode für Tonemapping in C++ liegt bei. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===BSP Bäume===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dtechdev.com/tutorials/leafbsp/3dbsptrees.html 3dtechdev.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Das beste Dokument überhaupt, für allem die selber BSP Bäume compilieren möchte. Ist belegt mit sehr viel Grafik. Erst beginnt er das Prinzip allgemein zum umschreiben, dann wird alles genau erläutert, und mit verständlichen Pseudocode untermalt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dtechdev.com/tutorials/illegalgeometry/illegalgeometrytut.html 3dtechdev.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Nicht ganz so gut geworden, wie sein erstes Tutorial, aber erklährt auch sehr gut, wie man illegale Geometrie aufspürt und beseitigt. Wieder mit Grafiken und Pseudocodes verständlich belegt. Hiermit kann man seinem Map-Compiler den letzten Schliff verleien. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/reference/articles/article981.asp Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Von Michael Abrash, dürfte der ''Erfinder'' von Quake sein. Naja, meine Englischkenntnisse reichen hier nicht ganz aus, um den Text zu verstehen. Ist etwas umständlich geschrieben. Dafür mit Grafiken unterlegt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.zfx-online.de/Tutorials.php?ID=11 Part 1 - Allgemein]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Einzigste deutsche Referenz zu BSP Bäumen, dafür Daumen hoch. Ist aber nicht das Wahre: schlechter C Code, und ich hatte auch nicht den Einduck, das er die Theorie zu diesem Thema bis in die Tiefe verstanden hat(oder er wollte es nicht zu akademisch Erklähren oO). Aber ein guter Einstieg in dieses Thema. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.zfx-online.de/Tutorials.php?ID=13 Part 2 - Kollision und PVS]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.cs.uwec.edu/~stevende/cs455/programs/GameTutorials%20-%20Quake%203%20BSP%20Format.htm Quake3 *.bsp Format]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die beste Dokumentation für das BSP Format, die ich gefunden habe, besser als den Quake3 Sourcecode zu durchforsten. Leider etwas magere Eklährung zu wichtigen Themen wie Patches(Curved Surfaces). Ich pers. hatte jetzt 1 1/2 Wochen gebraucht, um das *.bsp Format vollständig zu verstehen. Ist aber anscheinend die beste Format Dokumentation im Netz. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_q2bsp.shtml Quake2 *.bsp Format]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Kann auch nur soviel sagen, wie beim Link zuvor. Es fehlen hier auch zum Teil Informationen. Man muss halt viel ausprobieren, und sich den Quake 2 Source zu Herzen nehmen, damit man es versteht. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Himmel &amp;amp; Wolken===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/community/forums/topic.asp?topic_id=86024 Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Guter Thread mit vielen Anregungen und Links. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/community/forums/topic.asp?topic_id=135654 Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Hier wird die Diskussion zum obigen Link weitergeführt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://freespace.virgin.net/hugo.elias/models/m_clouds.htm Plasma]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine nette Idee um Plasma in Echtzeit zu generieren, und zu verändern. Leider nichts zum Shading. &lt;br /&gt;
|-&lt;br /&gt;
|[http://nis-lab.is.s.u-tokyo.ac.jp/~nis/cdrom/sig00_cloud.pdf 3D Wolken]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Paper über generieren und rendern von 3 dimensionalen Wolken inklusive Schatten und Lichtstrahlen. Ich hab nur den Lichtstahlen-Algorithmus ausprobiert. Saulangsam aber sehr einfach zu implementieren. Einen Blick ist es auf jeden Fall wert. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.geocities.com/ngdash/whitepapers/skydomecolor.html Skydome]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Wenn man mal schnell gute Farben für seinen Skydome braucht... &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Terrain===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_geomipmaps.shtml FlipCode]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Artikel zu Geomipmaping. Zummindest hab ich es hier zum ersten mal gesehen. Und es funzt ganz gut. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.vterrain.org Virtual Terrain Project]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Seite mit Links und Artikeln zu allem, was etwas mit Terrainrendering zu tun hat.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonstiges===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[Materialsammlung]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Sammlung von gängigen Parametern für [[glMaterial]] hier im Wiki.&lt;br /&gt;
|-&lt;br /&gt;
|[http://freespace.virgin.net/hugo.elias/radiosity/radiosity.htm Radiosity]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Erklährt sehr schön die Funktionsweise von Radiosity, liefert Beispielcodes und ist recht gut illustriert.&lt;br /&gt;
|-&lt;br /&gt;
|[http://legion.gibbering.net/projectx/paper/shadow%20mapping/ Shadowmapping]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt das Trapezoidal Shadow Mapping - Verfahren für gerichte Lichter.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_generatingnames.shtml Namensgenerator]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Per Zufallsgenrator Namen erzeugen, und nie wieder kreativ werden müssen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.paulsprojects.net/tutorials/simplebump/simplebump.html Bumpmapping]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Bumpmapping auf Lowend-Grakas. Damals war Bumpmapping noch was ganz tolles... &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.paulsprojects.net/opengl/dpreflect/dpreflect.html Dot Product Reflect]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|zwar nur ne Demo, aber wenn man schon immer mal mit EMBM das Wasser aus Morrowind nachproggen wollte... &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiele/Demos mit Quelltext ==&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.delphigl.de DelphiGL.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier finden sich besonders eindrucksvolle Newton Physik Demos. Meißtens sogar mit Quelltext.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.shadow3d.de.vu/ Shadow 3D]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier finden sich zwei Demos wie man Quake 3 Modelle lädt und eine glSlang Demo&lt;br /&gt;
|-&lt;br /&gt;
|[[Shadersammlung]] im DGL Wiki&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier findet man freie Shadersourcen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.humus.name Humus]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Diverse eindrucksvolle Demos zu verschiedenen Techniken, häufig mit Quelltext in C (teilweise OpenGL / DirectX)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== weitere Links ==&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www-user.tu-chemnitz.de/~pester/Lehre/CompGeo.pdf CompGeo.pdf]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Script &amp;quot;Einführung in die Computergeometrie&amp;quot; von Dr. Pester (TU-Chemnitz). Ideales Nachschlagewerk für die Mathematik die einem bei der Grafikprogrammierung so begegnet.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.robsite.de/ robsite.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Auf dieser riesigen Seite finden sich auch viele weitere Links über verschiedene Themen der 3D Programmierung.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dlinks.com/links.cfm?categoryid=3&amp;amp;subcategoryid=21 3dlinks.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Diese Seite hat es sich zur Hauptaufgabe gemacht Links auf Seiten mit dem Thema 3D zu sammeln.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.two-kings.de/links.html two-kings.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Sammlung diverser interessanter Links, vorallem auf Themen im gamedev-Forum verweisend.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.delgine.com Delgine.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Heimat des freien 3D Modellers &amp;quot;DeleD&amp;quot;, welcher in Delphi programmiert ist. Ihr findet dort auch Modellpackete, Texturpackete, Plugins und Hilfe bei der Programmierung von Delphi und OpenGL.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Links zum Thema Spieleprogrammierung=&lt;br /&gt;
&lt;br /&gt;
==Allgemein==&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.spieleprogrammierung.net/ Spieleprogrammierung - OpenGL - GLSL - OpenAL - KI - Animation - Spielephysik]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr Artikel, Tutorials und Programmbeispiele rund um das Thema Spieleprogrammierung. Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://audio-framework.spieleprogrammierung.net/ OpenAL Audio Framework]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr ein frei verfügbares OpenAL Audio Framework (LGPL-Lizenz) samt zugehöriger Probammbeispiele. Unterstützt werden 3D Sounds, EFX (EAX Alternative) Reverb Effekte sowie Audio Streaming (Music and Voices). Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://spieleentwicklung-im-web.spieleprogrammierung.net/ Spieleentwicklung im Web]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr Links (E-Books, Präsentationen, wissenschaftliche Arbeiten und Tutorials) zu verschiedenen Themengebieten der Spieleentwicklung.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kopierschutz==&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://inner-smile.com/nocrack.phtml Inner-Smile.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Seite mit Gedanken zum Thema &amp;quot;Wie schütze ich meine Programme vor Crackern&amp;quot;. Falls die Seite nicht erreichbar ist hat Google noch ne [http://www.google.com/search?q=cache:hpqPT5G4WB0J:www.inner-smile.com/nocrack.phtml+http://inner-smile.com/nocrack.phtml&amp;amp;hl=de&amp;amp;gl=de&amp;amp;ct=clnk&amp;amp;cd=1 Version im Archiv].&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==KI==&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.kbs.uni-hannover.de/Lehre/KI2/Presentationen/presentation9798/esprit/spieltheorie/spieltheorie.html Uni-Hannover - Spieltheorie]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Artikel über die Grundlagen von KI in Spielen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.robsite.de/tutorials.php?tut=ki Robsite KI-Tutorials]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Sammlung von Texten zum Thema KI in Spielen. Beispiele sind meist in C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://ai-depot.com/ AI-Depot.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Seite die sich ausschließlich mit KI in Spielen beschäftigt.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ai-junkie.com/links.html AI-Junkie.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Linkseite mit vielen KI relevanten Links. Die Seite AI-Junie selbst behandelt auch viele Themen rund um KI.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.aiwisdom.com/ AIWisdom.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Seite die sich mit KIs in Spielen beschäftigt und sich zum Ziel gesetzt hat, alle Artikel zum Thema zu finden und zu Katalogisieren. Es gibt hier auch Artikel über die KIs bestehender Spiele.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.aiguru.com/ AIGuru.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Newsseite zum Thema KI, Künstliches Leben, Hiernforschung, Robotik, Nanotechnologie - Halt alles was Spass macht.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.generation5.org/ Generation5.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Seite über KI, Robotik, etc. . Leider scheint die Seite Probleme zu haben regelmäßig aktualisiert zu werden. Aber zumindest sollte man einige Artikel finden. Die werden ja nicht schlecht.&lt;br /&gt;
|-&lt;br /&gt;
|www.gameai.com&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|''Wurde Januar 2010 als down gemeldet. Weiss irgendwer etwas genaueres?'' Seite zum Thema KI in Spielen. Soll wohl einen gewissen Stellenwert in der AI-Szene haben.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www-i1.informatik.rwth-aachen.de/~algorithmus/algo19.php Algorithmus der Woche - Informatikjahr 2006]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Vielleicht schon etwas älter aber doch eine gute Anleitung um eine einfache Schach-KI zu erstellen.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Links für nicht grafische Medien=&lt;br /&gt;
&lt;br /&gt;
==Sound==&lt;br /&gt;
&lt;br /&gt;
===Musik===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.jamendo.com/ Jamendo.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Viele Künstler stellen hier ihre Alben unter einer Creative Commons Lizenz online.&lt;br /&gt;
|-&lt;br /&gt;
|[http://incompetech.com/m/c/royalty-free/ Incompetech.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Viele sehr schön gemacht instrumentale Musik aus allen möglichen Genres. Sie ist frei verwenderbar, wenn man den Macher der Musik (Kevin MacLeod) in seinem Programm erwähnt. Aber das hat er auch verdient. Folgende Programme nutzen beispielsweise (auch) Musik von incompetech.com:&lt;br /&gt;
* OpenParty&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Soundeffekte===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.freesound.org/ freesound.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Diverse Sounds unter [http://www.creativecommons.org/ CreativeCommons] Lizenzen.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Soundprogramme===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://audacity.sourceforge.net/?lang=de Sourceforgeseite von Audacity]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein einfaches, freies Programm um Sounddateien zu bearbeiten. Man kann es auch nutzen um Soundeffekte neu zu erstellen, indem man z.B. ein Geräusch mit dem Mikrofon aufnimmt und einige Effekt anwendet, um es passender und nicht mehr aufgenommen klingen zu lassen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://lmms.sourceforge.net/ LMMS]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|LMMS (Linux MultiMedia Studio) ist ein OpenSource+Freeware Composer-Programm ähnlich zum bekannteren aber auch teuren CuBase(r). Trotz des Namens auch für Windows erhältlich.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Link&amp;diff=25062</id>
		<title>Link</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Link&amp;diff=25062"/>
				<updated>2011-03-04T15:21:42Z</updated>
		
		<summary type="html">&lt;p&gt;Lord horazont: /* Soundeffekte */ Freesound.org (Lizenzen? Lizensen? Schwieriges Wort)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
!!!!!!!! NUTZT DIESE TABELLE ALS VORLAGE FÜR WEITERE LINKTABELLEN !!!!!!!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{|{{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[Link]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[Link]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Links die mit Grafik/OpenGL zu tun haben =&lt;br /&gt;
Hier finden Sie eine Übersicht von Links. &lt;br /&gt;
&lt;br /&gt;
*Weitere Navigations Links findet Sie unter [[DGL Wiki:Portal]]&lt;br /&gt;
*Links zu Tools oder Programmen finden Sie unter [[Tool]]s&lt;br /&gt;
&lt;br /&gt;
== Hardwareinfos ==&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://delphi3d.net/hardware/listreports.php OpenGL Hardware Registry - Hardwareübersicht]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Datenbank aller Grafikkarten die in der Harware Registry vorhanden sind. Die einzelnen Artikel enthalten Infos darüber, welche Extensions von der Grafikkarte unterstützt werden.&lt;br /&gt;
|-&lt;br /&gt;
|[http://delphi3d.net/hardware/allexts.php OpenGL Hardware Registry - Extensionübersicht]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Datenbank aller Extensions die in der Harware Registry vorhanden sind. Die einzelnen Artikel enthalten Infos darüber, welche Grafikkarten die entsprechende Extension unterstützen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
&lt;br /&gt;
=== OpenGL ===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
||[[Tutorial|DGL Wiki - Tutorial]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|DelphiGL.com ist Betreiber dieses Wikis und stellt eine Vielzahl Tutorials mit Schwehrpunkt OpenGL zur Verfügung. &lt;br /&gt;
Neben Tutorials für Einsteiger und OpenGL Anfänger gibt es auch fortgeschrittene Themen wie Shader oder Partikelsysteme.Sprache der Wahl ist hier Delphi.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.joachimrohde.com/cms/xoops/modules/articles/index.php?cat_id=1 joachimrohde.com]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet ihr deutsche Übersetzungen der bekannten NeHe Tutorials. Sprache der Wahl ist hier C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.cg.tuwien.ac.at/studentwork/VRSem96/OpenGL/ Technische Universität Wien]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[http://nehe.gamedev.net/ Nehe] &lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die berühmt berüchtigten NeHe Tutorials sind eine umfangreiche Sammlung an Tutorials zum Thema OpenGL. Von Anfängertutorials bis hin zu komplexen Effekten wird alles behandelt. Sprache der Wahl ist hier C++. (Eine Übersetzung der NeHe Tutorials findet ihr bei Joachim Rhode (siehe oben). )&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.sulaco.co.za/tut.htm sulaco.co.za] &lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| OpenGL Beispiele in Delphi&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Textur Erstellung ===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://3d.diehlsworld.de/textures/index.htm 3d.diehlsworld.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet ihr kurze aber inhaltlich reiche Tutorials zu der Frage &amp;quot;Wie erstelle ich XXXXX-Texturen&amp;quot;. Dabei reicht die Palette von Untergrundtexturen wie Gras, Sand , Fels und Wasser (und Kombinationen dieser) bis hin zu Blitzen und Partikeln. Als Programm wird hier Photoshop verwendet.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gimps.de/gimp/textur-muster/ gimps.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Schritt für Schritt Anleitungen wie man mit Gimp verschiedene Texturen erstellt.&lt;br /&gt;
|-&lt;br /&gt;
|[http://cbt.k090999.de/gimp.php#texturen k090999.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Gimptutorials zum Erstellen verschiedene Texturen.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Blender ===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://blendpolis.de/f/viewtopic.php?t=5786 Blendpolis]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Ein Thread im Forum von [http://blendpolis.de Blendpolis] in dem '''sehr''' viele Tutorials aufgelistet sind&lt;br /&gt;
|-&lt;br /&gt;
|[http://blendpolis.de/f/article_cat.php?fldAuto=7 Blendpolis]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Eigentliche Tutorial Seite von [http://blendpolis.de Blendpolis] die Auswahl ist hier aber nicht so groß&lt;br /&gt;
|-&lt;br /&gt;
|[http://wikivid.com/index.php/Blender Blender at wikivid.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Linksammlung von Blender Video Tutorials&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.blender.org/education-help/tutorials/getting-started/ blender3d.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Auch die Heimatseite von Blender bietet viele Tutorials unter anderm auch Video Tuorials&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.Blenderunderground.com Blenderunderground]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| '''sehr gute''' Video-Tutorials&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OpenGL Funktionen ==&lt;br /&gt;
&lt;br /&gt;
=== GL ===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GL|DGL Wiki - Kategorie GL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten OpenGL Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL.tar.gz OpenGL.org - Orginal Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die Orginalspezifikationen der OpenGL 1.0 und OpenGL 1.1 Befehle. (Diese HTML-Dokumente sind nicht Copy&amp;amp;Paste freundlich, da sie vermutlich automatisch aus vorhandenen Dateien (Postscript) erzeugt wurden.)&lt;br /&gt;
|-&lt;br /&gt;
|[http://developer.3dlabs.com/documents/glmanpage_index.htm 3dLabs]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die Orginalspezifikationen der OpenGL 1.0 und OpenGL 1.1 Befehle.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von Englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glfunc01_4f03.asp MSDN von Microsoft]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|OpenGL Dokumentation in der MSDN. Die Erklärung der MSDN sind meist keine reinen Kopien der Orginalspezifikationen, sondern enthalten hin und wieder auch zusätzliche Informationen, oder formulieren Texte auf verständlichere Art und Weise.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLU ===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GLU|DGL Wiki - Kategorie GLU]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten GLU Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glu/ OpenGL.org - Orginal Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Orginalspezifikationen für die GLU Befehle. (Diese HTML-Dokumente sind nicht Copy&amp;amp;Paste freundlich, da sie vermutlich automatisch aus vorhandenen Dateien (Postscript) erzeugt wurden.)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glufnc01_0e43.asp MSDN von Microsoft]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|GLU Dokumentation in der MSDN. Die Erklärung der MSDN sind meist keine reinen Kopien der Orginalspezifikationen, sondern enthalten hin und wieder auch zusätzliche Informationen, oder formulieren Texte auf verständlichere Art und Weise.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLX ===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:GLX|DGL Wiki - Kategorie GLX]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Wiki-Kategorie die alle übersetzten GLX Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glx/ OpenGL.org - Orginal  Spezifkationen]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Orgninalspezifikationen der GLX Befehle bei OpenGL.org.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.mevis.de/~uwe/opengl/opengl.html mevis.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung von Englischsprachigen Spezifikationen für GL(bis Version 1.1), GLX und GLU Funktionen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WGL ===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:WGL|DGL Wiki - Kategorie WGL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Wiki-Kategorie die alle übersetzten WGL Befehle enthält.&lt;br /&gt;
|-&lt;br /&gt;
|[http://developer.3dlabs.com/documents/wglmanpage_index.htm 3dLabs]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Sammlung einiger WGL Befehlsspezifikationen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLUT ===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://freeglut.sourceforge.net/docs/api.php The freeglut Projekt]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Englischsprachige Dokumentation zum OpenGL Utility Toolkit kurz GLUT.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SDL ===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[:Kategorie:SDL|DGL Wiki - Kategorie SDL]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Übersicht aller auf die SDL bezogenen Artikel hier im Wiki. Darunter befinden sich eine Vielzahl von Übersetzungen der SDL Befehlspezifikationen. Diese können auch in der [[SDL-Funktionsübersicht]] gefunden werden.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.libsdl.org/cgi/docwiki.cgi/SDL_20API libsdl.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Das Dokumentationswiki von libSDL.org enthält die komplette Dokumenation zur SDL in englischer Sprache.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.fp.sdl.de.vu/ fp.sdl.de.vu]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Eine Webseite die speziell Informationen über die Programmierung von SDL unter Freepascal zur Verfügung stellt.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FAQs ==&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[FAQ| DGL Wiki - FAQ]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein FAQ (Frequently Asked Questions = Häufig gestellte Fragen) zu DelphiGL.com und dem DGL Wiki.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dsource.de/faq/index.htm 3dsource.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein FAQ zu Fragen rund um OpenGL.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Effekte und Techniken mit OpenGL ==&lt;br /&gt;
&lt;br /&gt;
===Glow===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamasutra.com/view/feature/2107/realtime_glow.php Gamasutra]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt, wie man mit Hilfe von Shader(hier DirectX Shader) den Gloweffekt in Realtime umsetzt. Dabei wird erst die Technik dahinter erklährt, und dann wie man sie Schritt für Schritt umsetzt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://collective.valve-erc.com/index.php?go=tron1 valve-erc.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Schritt für Schritt Anleitung, wie man mit Hilfe von Cg in OpenGL den Glow Effekt realisieren kann &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===HDR===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/columns/hardcore/hdrrendering/ gamedev.net]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Hier wird sehr kurz eingeleitet, was HDR Rendering überhaupt ist, dann wird der Aufbau des *.hdr Formats erläutert, und dann geht es schon von 0 auf 100 zum Programmieren. Erklährungen gibt es kaum, dafür werden fertige Shader(für DirectX) geboten. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/reference/articles/article2208.asp gamedev.net]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt auch nur etwas kurz das HDR Verfahren, jedoch mit mehr mathematischen Hintergrund in Sachen Tonemapping. Beispielcode für Tonemapping in C++ liegt bei. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===BSP Bäume===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dtechdev.com/tutorials/leafbsp/3dbsptrees.html 3dtechdev.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Das beste Dokument überhaupt, für allem die selber BSP Bäume compilieren möchte. Ist belegt mit sehr viel Grafik. Erst beginnt er das Prinzip allgemein zum umschreiben, dann wird alles genau erläutert, und mit verständlichen Pseudocode untermalt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dtechdev.com/tutorials/illegalgeometry/illegalgeometrytut.html 3dtechdev.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Nicht ganz so gut geworden, wie sein erstes Tutorial, aber erklährt auch sehr gut, wie man illegale Geometrie aufspürt und beseitigt. Wieder mit Grafiken und Pseudocodes verständlich belegt. Hiermit kann man seinem Map-Compiler den letzten Schliff verleien. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/reference/articles/article981.asp Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Von Michael Abrash, dürfte der ''Erfinder'' von Quake sein. Naja, meine Englischkenntnisse reichen hier nicht ganz aus, um den Text zu verstehen. Ist etwas umständlich geschrieben. Dafür mit Grafiken unterlegt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.zfx-online.de/Tutorials.php?ID=11 Part 1 - Allgemein]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Einzigste deutsche Referenz zu BSP Bäumen, dafür Daumen hoch. Ist aber nicht das Wahre: schlechter C Code, und ich hatte auch nicht den Einduck, das er die Theorie zu diesem Thema bis in die Tiefe verstanden hat(oder er wollte es nicht zu akademisch Erklähren oO). Aber ein guter Einstieg in dieses Thema. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.zfx-online.de/Tutorials.php?ID=13 Part 2 - Kollision und PVS]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.cs.uwec.edu/~stevende/cs455/programs/GameTutorials%20-%20Quake%203%20BSP%20Format.htm Quake3 *.bsp Format]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Die beste Dokumentation für das BSP Format, die ich gefunden habe, besser als den Quake3 Sourcecode zu durchforsten. Leider etwas magere Eklährung zu wichtigen Themen wie Patches(Curved Surfaces). Ich pers. hatte jetzt 1 1/2 Wochen gebraucht, um das *.bsp Format vollständig zu verstehen. Ist aber anscheinend die beste Format Dokumentation im Netz. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_q2bsp.shtml Quake2 *.bsp Format]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Kann auch nur soviel sagen, wie beim Link zuvor. Es fehlen hier auch zum Teil Informationen. Man muss halt viel ausprobieren, und sich den Quake 2 Source zu Herzen nehmen, damit man es versteht. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Himmel &amp;amp; Wolken===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/community/forums/topic.asp?topic_id=86024 Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Guter Thread mit vielen Anregungen und Links. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamedev.net/community/forums/topic.asp?topic_id=135654 Gamedev]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Hier wird die Diskussion zum obigen Link weitergeführt. &lt;br /&gt;
|-&lt;br /&gt;
|[http://freespace.virgin.net/hugo.elias/models/m_clouds.htm Plasma]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine nette Idee um Plasma in Echtzeit zu generieren, und zu verändern. Leider nichts zum Shading. &lt;br /&gt;
|-&lt;br /&gt;
|[http://nis-lab.is.s.u-tokyo.ac.jp/~nis/cdrom/sig00_cloud.pdf 3D Wolken]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Paper über generieren und rendern von 3 dimensionalen Wolken inklusive Schatten und Lichtstrahlen. Ich hab nur den Lichtstahlen-Algorithmus ausprobiert. Saulangsam aber sehr einfach zu implementieren. Einen Blick ist es auf jeden Fall wert. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.geocities.com/ngdash/whitepapers/skydomecolor.html Skydome]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Wenn man mal schnell gute Farben für seinen Skydome braucht... &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Terrain===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_geomipmaps.shtml FlipCode]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Artikel zu Geomipmaping. Zummindest hab ich es hier zum ersten mal gesehen. Und es funzt ganz gut. &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.vterrain.org Virtual Terrain Project]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Eine Seite mit Links und Artikeln zu allem, was etwas mit Terrainrendering zu tun hat.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonstiges===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[[Materialsammlung]]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Sammlung von gängigen Parametern für [[glMaterial]] hier im Wiki.&lt;br /&gt;
|-&lt;br /&gt;
|[http://freespace.virgin.net/hugo.elias/radiosity/radiosity.htm Radiosity]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Erklährt sehr schön die Funktionsweise von Radiosity, liefert Beispielcodes und ist recht gut illustriert.&lt;br /&gt;
|-&lt;br /&gt;
|[http://legion.gibbering.net/projectx/paper/shadow%20mapping/ Shadowmapping]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Beschreibt das Trapezoidal Shadow Mapping - Verfahren für gerichte Lichter.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.flipcode.com/articles/article_generatingnames.shtml Namensgenerator]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Per Zufallsgenrator Namen erzeugen, und nie wieder kreativ werden müssen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.paulsprojects.net/tutorials/simplebump/simplebump.html Bumpmapping]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Bumpmapping auf Lowend-Grakas. Damals war Bumpmapping noch was ganz tolles... &lt;br /&gt;
|-&lt;br /&gt;
|[http://www.paulsprojects.net/opengl/dpreflect/dpreflect.html Dot Product Reflect]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|zwar nur ne Demo, aber wenn man schon immer mal mit EMBM das Wasser aus Morrowind nachproggen wollte... &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiele/Demos mit Quelltext ==&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.delphigl.de DelphiGL.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier finden sich besonders eindrucksvolle Newton Physik Demos. Meißtens sogar mit Quelltext.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.shadow3d.de.vu/ Shadow 3D]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier finden sich zwei Demos wie man Quake 3 Modelle lädt und eine glSlang Demo&lt;br /&gt;
|-&lt;br /&gt;
|[[Shadersammlung]] im DGL Wiki&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Hier findet man freie Shadersourcen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.humus.name Humus]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Diverse eindrucksvolle Demos zu verschiedenen Techniken, häufig mit Quelltext in C (teilweise OpenGL / DirectX)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== weitere Links ==&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www-user.tu-chemnitz.de/~pester/Lehre/CompGeo.pdf CompGeo.pdf]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Script &amp;quot;Einführung in die Computergeometrie&amp;quot; von Dr. Pester (TU-Chemnitz). Ideales Nachschlagewerk für die Mathematik die einem bei der Grafikprogrammierung so begegnet.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.robsite.de/ robsite.de]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Auf dieser riesigen Seite finden sich auch viele weitere Links über verschiedene Themen der 3D Programmierung.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.3dlinks.com/links.cfm?categoryid=3&amp;amp;subcategoryid=21 3dlinks.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Diese Seite hat es sich zur Hauptaufgabe gemacht Links auf Seiten mit dem Thema 3D zu sammeln.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.two-kings.de/links.html two-kings.de]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Sammlung diverser interessanter Links, vorallem auf Themen im gamedev-Forum verweisend.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.delgine.com Delgine.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Heimat des freien 3D Modellers &amp;quot;DeleD&amp;quot;, welcher in Delphi programmiert ist. Ihr findet dort auch Modellpackete, Texturpackete, Plugins und Hilfe bei der Programmierung von Delphi und OpenGL.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Links zum Thema Spieleprogrammierung=&lt;br /&gt;
&lt;br /&gt;
==Allgemein==&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.spieleprogrammierung.net/ Spieleprogrammierung - OpenGL - GLSL - OpenAL - KI - Animation - Spielephysik]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr Artikel, Tutorials und Programmbeispiele rund um das Thema Spieleprogrammierung. Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://audio-framework.spieleprogrammierung.net/ OpenAL Audio Framework]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr ein frei verfügbares OpenAL Audio Framework (LGPL-Lizenz) samt zugehöriger Probammbeispiele. Unterstützt werden 3D Sounds, EFX (EAX Alternative) Reverb Effekte sowie Audio Streaming (Music and Voices). Programmiersprache ist hier C/C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://spieleentwicklung-im-web.spieleprogrammierung.net/ Spieleentwicklung im Web]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Auf dieser Seite findet Ihr Links (E-Books, Präsentationen, wissenschaftliche Arbeiten und Tutorials) zu verschiedenen Themengebieten der Spieleentwicklung.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kopierschutz==&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://inner-smile.com/nocrack.phtml Inner-Smile.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Seite mit Gedanken zum Thema &amp;quot;Wie schütze ich meine Programme vor Crackern&amp;quot;. Falls die Seite nicht erreichbar ist hat Google noch ne [http://www.google.com/search?q=cache:hpqPT5G4WB0J:www.inner-smile.com/nocrack.phtml+http://inner-smile.com/nocrack.phtml&amp;amp;hl=de&amp;amp;gl=de&amp;amp;ct=clnk&amp;amp;cd=1 Version im Archiv].&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==KI==&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.kbs.uni-hannover.de/Lehre/KI2/Presentationen/presentation9798/esprit/spieltheorie/spieltheorie.html Uni-Hannover - Spieltheorie]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Artikel über die Grundlagen von KI in Spielen.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.robsite.de/tutorials.php?tut=ki Robsite KI-Tutorials]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
| Sammlung von Texten zum Thema KI in Spielen. Beispiele sind meist in C++.&lt;br /&gt;
|-&lt;br /&gt;
|[http://ai-depot.com/ AI-Depot.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
| Seite die sich ausschließlich mit KI in Spielen beschäftigt.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ai-junkie.com/links.html AI-Junkie.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Linkseite mit vielen KI relevanten Links. Die Seite AI-Junie selbst behandelt auch viele Themen rund um KI.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.aiwisdom.com/ AIWisdom.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Seite die sich mit KIs in Spielen beschäftigt und sich zum Ziel gesetzt hat, alle Artikel zum Thema zu finden und zu Katalogisieren. Es gibt hier auch Artikel über die KIs bestehender Spiele.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.aiguru.com/ AIGuru.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Newsseite zum Thema KI, Künstliches Leben, Hiernforschung, Robotik, Nanotechnologie - Halt alles was Spass macht.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.generation5.org/ Generation5.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Seite über KI, Robotik, etc. . Leider scheint die Seite Probleme zu haben regelmäßig aktualisiert zu werden. Aber zumindest sollte man einige Artikel finden. Die werden ja nicht schlecht.&lt;br /&gt;
|-&lt;br /&gt;
|www.gameai.com&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|''Wurde Januar 2010 als down gemeldet. Weiss irgendwer etwas genaueres?'' Seite zum Thema KI in Spielen. Soll wohl einen gewissen Stellenwert in der AI-Szene haben.&lt;br /&gt;
|-&lt;br /&gt;
|[http://www-i1.informatik.rwth-aachen.de/~algorithmus/algo19.php Algorithmus der Woche - Informatikjahr 2006]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Vielleicht schon etwas älter aber doch eine gute Anleitung um eine einfache Schach-KI zu erstellen.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Links für nicht grafische Medien=&lt;br /&gt;
&lt;br /&gt;
==Sound==&lt;br /&gt;
&lt;br /&gt;
===Musik===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.jamendo.com/ Jamendo.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Viele Künstler stellen hier ihre Alben unter einer Creative Commons Lizenz online.&lt;br /&gt;
|-&lt;br /&gt;
|[http://incompetech.com/m/c/royalty-free/ Incompetech.com]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Viele sehr schön gemacht instrumentale Musik aus allen möglichen Genres. Sie ist frei verwenderbar, wenn man den Macher der Musik (Kevin MacLeod) in seinem Programm erwähnt. Aber das hat er auch verdient. Folgende Programme nutzen beispielsweise (auch) Musik von incompetech.com:&lt;br /&gt;
* OpenParty&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Soundeffekte===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.freesound.org/ freesound.org]&lt;br /&gt;
|{{Englisch}}&lt;br /&gt;
|Diverse Sounds unter [http://www.creativecommons.org/ CreativeCommons] Lizenzen.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Soundprogramme===&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| width = &amp;quot;100%&amp;quot; {{Prettytable_B1}}&lt;br /&gt;
!width=&amp;quot;25%&amp;quot;|Link&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;|Sprache&lt;br /&gt;
!width=&amp;quot;70%&amp;quot;|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|[http://audacity.sourceforge.net/?lang=de Sourceforgeseite von Audacity]&lt;br /&gt;
|{{Deutsch}}&lt;br /&gt;
|Ein einfaches, freies Programm um Sounddateien zu bearbeiten. Man kann es auch nutzen um Soundeffekte neu zu erstellen, indem man z.B. ein Geräusch mit dem Mikrofon aufnimmt und einige Effekt anwendet, um es passender und nicht mehr aufgenommen klingen zu lassen.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lord horazont</name></author>	</entry>

	</feed>