See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
OpenGL Shading Language – Wikipedia

OpenGL Shading Language

aus Wikipedia, der freien Enzyklopädie

Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf bitte mit, ihn zu verbessern, und entferne anschließend diese Markierung.

Die OpenGL Shading Language (kurz: GLSL oder glSlang) ist eine Programmiersprache, um mit OpenGL auf dem Grafikprozessor eigene Programme, sogenannte Shader, auszuführen. Diese können die sonst stark limitierten und festen Verarbeitungsvorschriften der Grafikkarte (Grafikpipeline) teilweise ersetzen.

GLSL ist Teil der OpenGL-Spezifikation, die den Funktionsumfang von OpenGL definieren. glSlang wurde offiziell ab der OpenGL-Version 2.0 eingeführt. In OpenGL 1.4 ist es jedoch schon als Extension enthalten.

Inhaltsverzeichnis

[Bearbeiten] Sprachmerkmale

GLSL ist eine C-ähnliche Programmiersprache, die speziell an die Notwendigkeiten von Shadern angepasst wurde. So gibt es eingebaute Typen für Vektoren, SIMD und Anbindungen an die OpenGL Umgebung.

Es gibt zwei verschiedene Arten von Shadern die mit GLSL definiert werden können. Dies sind die Vertex-Shader und die Fragmentshader. Ein Vertex-Shader wird für jedes Vertex einmal ausgeführt, während ein Fragmentshader für jedes Fragment einmal läuft. Fragmentshader sind das Äquivalent zu Direct3Ds Pixelshader.

Im Detail kann die Standardfunktionalität, die vor der Rasterisierung stattfindet, durch Vertex-Shader ersetzt werden. Die danach vorliegenden Fragmente (Pixel bevor sie auf dem Anzeigegerät angezeigt werden) werden dann mittels der Fragmentshader bearbeitet. Hier wird die Farbe für das entsprechende Fragment berechnet.

Der Vertex-Shader wird in jedem Frame auf jedem Vertex ausgeführt und hat dabei nur Zugriff auf den gerade behandelten Vertex (inkl. seiner Texturkoordinaten, Normalen und sonstiger übergebener Daten), aber nicht etwa auf Nachbar-Vertices, die Topologie oder Ähnliches.

[Bearbeiten] Beispiele

[Bearbeiten] Vertexshader

Dieser Vertexshader verhält sich ähnlich wie der unveränderte Vertexshader der Grafikkarte. Die Vordergrundfarbe wird gesetzt und die Standardfunktion ftransform() führt die gewöhnliche Vertex-Transformation (sogenannte Fixed Function, in der Grafikkarte festgelegte Berechnungen) durch.

void main(void) 
 {
   gl_FrontColor = gl_Color;
   gl_Position = ftransform();
 }

[Bearbeiten] Fragmentshader

Dieser einfache Fragmentshader setzt die Fragmentfarbe auf die mit glColor festgelegte Farbe.

void main(void)
  {
    gl_FragColor = gl_Color;
  }

[Bearbeiten] Literatur

  • Rost, Randi. OpenGL Shading Language. 1st ed. Pearson Education, Inc, 2004. ISBN 0321197895

[Bearbeiten] Weblinks


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -