<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=GLSL</id>
	<title>GLSL - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=GLSL"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=GLSL&amp;action=history"/>
	<updated>2026-07-05T13:28:43Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=GLSL&amp;diff=233518&amp;oldid=prev</id>
		<title>imported&gt;ExultantEditor 来自 2025年12月26日 (五) 16:05</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=GLSL&amp;diff=233518&amp;oldid=prev"/>
		<updated>2025-12-26T16:05:18Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox software&lt;br /&gt;
| name = GLSL&lt;br /&gt;
| title = GLSL&lt;br /&gt;
| logo = GLSL_Logo_(Unofficial).svg&lt;br /&gt;
| logo size = x64px&lt;br /&gt;
| logo caption = &amp;#039;&amp;#039;非官方logo&amp;#039;&amp;#039;&lt;br /&gt;
| screenshot = &lt;br /&gt;
| caption = &lt;br /&gt;
| collapsible = &lt;br /&gt;
| author = {{le|OpenGL架构评论板|OpenGL Architecture Review Board|OpenGL ARB}}&lt;br /&gt;
| developer = [[Khronos Group]]&lt;br /&gt;
| released = {{Start date and age|2002|07|24}} (作为一个扩展)&lt;br /&gt;
| discontinued = &lt;br /&gt;
| latest_release_version = 4.60.8&lt;br /&gt;
| latest_release_date = {{Start date and age|2023|08|14}}&amp;lt;ref&amp;gt;{{cite web|url=https://registry.khronos.org/OpenGL/specs/gl/GLSLangSpec.4.60.html|title=The OpenGL® Shading Language, Version 4.60.8}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| latest preview version = &lt;br /&gt;
| latest preview date = &amp;lt;!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} --&amp;gt;&lt;br /&gt;
| programming language = &lt;br /&gt;
| operating_system = &lt;br /&gt;
| platform = [[跨平台]]&lt;br /&gt;
| size = &lt;br /&gt;
| genre = [[编程语言]]&lt;br /&gt;
| license = &lt;br /&gt;
| website = &lt;br /&gt;
| standard = &lt;br /&gt;
| AsOf = &lt;br /&gt;
}}&lt;br /&gt;
[[File:Linux kernel and OpenGL video games.svg|thumb|GLSL基本框架]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GLSL&amp;#039;&amp;#039;&amp;#039; - &amp;#039;&amp;#039;&amp;#039;OpenGL Shading Language&amp;#039;&amp;#039;&amp;#039; 也稱作 &amp;#039;&amp;#039;&amp;#039;GLslang&amp;#039;&amp;#039;&amp;#039;，是一個以[[C語言]]為基礎的[[高階程式語言|高階]][[著色語言]]。它是由 {{le|OpenGL ARB|OpenGL Architecture Review Board}} 所建立，提供開發者對[[繪圖管線]]更多的直接控制，而無需使用汇编语言或硬體規格語言。&lt;br /&gt;
&lt;br /&gt;
== 背景 ==&lt;br /&gt;
隨著近年來繪圖卡的進步，&lt;br /&gt;
底层[[頂點 (電腦圖學)|頂點]]（vertex）和{{le|片段 (计算机图形)|Fragment (computer graphics)|片段}}（fragment）的渲染管線中加入更多更具彈性的新功能。&lt;br /&gt;
這個層次的可編程性由[[頂點著色器]]和[[着色器#像素着色器|像素着色器]]實現。&lt;br /&gt;
&lt;br /&gt;
最初這個功能是以匯編語言撰寫著色器來達到，不直觀而複雜。OpenGL ARB 建立了 OpenGL 著色語言，為 GPU 的程式設計提供更加直觀的方法，同時維護了 OpenGL 一向的開放標準。&lt;br /&gt;
&lt;br /&gt;
最初作為 OpenGL 1.4 的插件，後來由 {{le|OpenGL ARB|OpenGL Architecture Review Board}} 在2004 [[OpenGL]] 2.0 核心中正式納入，是自 1992 年 [[OpenGL]] 1.0 發布起第一個 [[OpenGL]] 的大改版。&lt;br /&gt;
&lt;br /&gt;
使用 GLSL 有如下好處：&lt;br /&gt;
*具有[[跨平台]]的相容性，包括 [[Macintosh]]、[[Microsoft Windows|Windows]] 和 [[Linux]] 等作業系統。&lt;br /&gt;
*編寫的著色器可以在所有支援 OpenGL 著色語言的繪圖卡上使用。&lt;br /&gt;
*允許廠商為特定的繪圖卡架構設計最佳化的代碼。&lt;br /&gt;
&lt;br /&gt;
== 詳細資料 ==&lt;br /&gt;
=== 資料類型 ===&lt;br /&gt;
OpenGL 著色語言規格定義了 22 個基本資料類型，有些用法與 [[C語言|C]] 相同，其它的是繪圖處理器特有的。&lt;br /&gt;
&lt;br /&gt;
*void – 用於沒有返回值的函式&lt;br /&gt;
*bool – 條件類型，其值可以是真或假&lt;br /&gt;
*int – 帶負號整數&lt;br /&gt;
*float – 浮點數&lt;br /&gt;
*vec2 – 2 個浮點數組成的向量&lt;br /&gt;
*vec3 – 3 個浮點數組成的向量&lt;br /&gt;
*vec4 – 4 個浮點數組成的向量&lt;br /&gt;
*bvec2 – 2 個布林組成的向量&lt;br /&gt;
*bvec3 – 3 個布林組成的向量&lt;br /&gt;
*bvec4 – 4 個布林組成的向量&lt;br /&gt;
*ivec2 – 2 個整數組成的向量&lt;br /&gt;
*ivec3 – 3 個整數組成的向量&lt;br /&gt;
*ivec4 – 4 個整數組成的向量&lt;br /&gt;
*mat2 – 浮點數的 2X2 矩陣&lt;br /&gt;
*mat3 – 浮點數的 3X3 矩陣&lt;br /&gt;
*mat4 – 浮點數的 4X4 矩陣&lt;br /&gt;
*sampler1D – 用來存取一維紋理的句柄（handle）（或：操作，作名詞解。）&lt;br /&gt;
*sampler2D – 用來存取二維紋理的句柄&lt;br /&gt;
*sampler3D – 用來存取三維紋理的句柄&lt;br /&gt;
*samplerCube – 用來存取立方映射紋理的句柄&lt;br /&gt;
*sampler1Dshadow – 用來存取一維深度紋理的句柄&lt;br /&gt;
*sampler2Dshadow – 用來存取二維深度紋理的句柄&lt;br /&gt;
&lt;br /&gt;
=== 運算子 ===&lt;br /&gt;
OpenGL 著色語言提供類似於 [[C語言]]的運算子。給開發者編寫著色器的靈活性。GLSL 包含了 [[C和C++運算子]]，除了位元運算子和[[指標 (電腦科學)|指標]]以外。&lt;br /&gt;
&lt;br /&gt;
=== 函式和控制結構 ===&lt;br /&gt;
類似於 [[C語言]]，GLSL 支援迴圈和分支，包括 if、else、if/else、for、do-while、break、continue 等。&lt;br /&gt;
&lt;br /&gt;
支援使用者定義函式，且各種常用的函式也已內建。這也就讓繪圖卡製造商，能夠在硬體層次上最佳化這些內建的函式。許多函式與 C 語言相同，如 &amp;lt;nowiki&amp;gt;exp()&amp;lt;/nowiki&amp;gt; 以及 &amp;lt;nowiki&amp;gt;abs()&amp;lt;/nowiki&amp;gt;，其它繪圖編程特有的，如 &amp;lt;nowiki&amp;gt;smoothstep()&amp;lt;/nowiki&amp;gt; 以及 &amp;lt;nowiki&amp;gt;texture2D()&amp;lt;/nowiki&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
=== 編譯和執行 ===&lt;br /&gt;
GLSL 著色器不是獨立的應用程式；其需要使用 [[OpenGL]] API 的應用程式。C、C++、C#、Delphi 和 Java 皆支援 [[OpenGL]] API，且支援 OpenGL 著色語言。&lt;br /&gt;
&lt;br /&gt;
GLSL 著色器本身只是簡單的字串集，這些字串集會傳送到硬體廠商的驅動程式，並從程式內部的 OpenGL API 進入點編譯。著色器可從程式內部或讀入純文字檔來即時建立，但必須以字串形式傳送到驅動程式。&lt;br /&gt;
&lt;br /&gt;
用以編譯、連結並傳送參數到 GLSL 程式的 API 集，已在三個 OpenGL 擴展中規定，且即將成為 [http://www.opengl.org/documentation/specs/version2.0/glspec20.pdf OpenGL 2.0]{{Wayback|url=http://www.opengl.org/documentation/specs/version2.0/glspec20.pdf |date=20070402033551 }} 核心的一部分。這些 API 可在以下擴展中找到：&lt;br /&gt;
* [https://web.archive.org/web/20130804063101/http://oss.sgi.com/projects/ogl-sample/registry/ARB/vertex_shader.txt ARB 頂點著色器]&lt;br /&gt;
* [https://web.archive.org/web/20130526132418/http://oss.sgi.com/projects/ogl-sample/registry/ARB/fragment_shader.txt ARB 片斷著色器]&lt;br /&gt;
* [https://web.archive.org/web/20070227171924/http://oss.sgi.com/projects/ogl-sample/registry/ARB/shader_objects.txt ARB 著色器物件]&lt;br /&gt;
&lt;br /&gt;
=== GLSL 頂點著色器的簡單範例 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=c&amp;gt;void main(void)&lt;br /&gt;
{&lt;br /&gt;
    gl_Position = ftransform();&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLSL 片斷著色器的簡單範例 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=c&amp;gt;void main(void)&lt;br /&gt;
{&lt;br /&gt;
    gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 工具 ===&lt;br /&gt;
GLSL 著色器可以事先建立和測試，現有以下 GLSL 開發工具：&lt;br /&gt;
* [http://www.ati.com/developer/rendermonkey/ RenderMonkey]{{Wayback|url=http://www.ati.com/developer/rendermonkey/ |date=20061004113827 }} - 這個軟體是由 ATI 製作的，提供界面用以建立、編譯和除錯 GLSL 著色器，和 DirectX 著色器一樣。僅能在 Windows 平台上執行。&lt;br /&gt;
* GLSLEditorSample - 在 Mac OS X 上，它是目前唯一可用的程式，其提供著色器的建立和編譯，但不能除錯。它是 [[cocoa]] 應用程式，僅能在 Mac OS X 上執行。&lt;br /&gt;
* [http://sourceforge.net/projects/lumina/ Lumina]{{Wayback|url=http://sourceforge.net/projects/lumina/ |date=20070302213333 }} - Lumina 是新的 GLSL 開發工具。其使用 QT 界面，可以跨平台。&lt;br /&gt;
&lt;br /&gt;
== 参见 ==&lt;br /&gt;
* [[著色語言]]&lt;br /&gt;
* [[HLSL]]，高階著色語言&lt;br /&gt;
* [[Cg语言|Cg]]，nVIDIA 的著色語言&lt;br /&gt;
* [[程式設計]]&lt;br /&gt;
* [[计算机图形学]]&lt;br /&gt;
* [[OpenGL]]&lt;br /&gt;
* [[著色器]]&lt;br /&gt;
&lt;br /&gt;
== 參考文獻 ==&lt;br /&gt;
*[[Rost, Randi J.]] &amp;#039;&amp;#039;OpenGL Shading Language&amp;#039;&amp;#039;. 1st ed. Pearson Education, Inc, 2004. ISBN 0-321-19789-5&lt;br /&gt;
*Kessenich, John, &amp;amp; Baldwin, David, &amp;amp; Rost, Randi. &amp;#039;&amp;#039;The OpenGL Shading Language&amp;#039;&amp;#039;. Version 1.10.59. 3Dlabs, Inc. Ltd. https://web.archive.org/web/20070404171317/http://developer.3dlabs.com/documents/index.htm&lt;br /&gt;
&lt;br /&gt;
== 外部連結 ==&lt;br /&gt;
*[http://www.opengl.org/registry/doc/GLSLangSpec.Full.1.20.8.pdf GLSL 語言規格，版本 1.20]{{Wayback|url=http://www.opengl.org/registry/doc/GLSLangSpec.Full.1.20.8.pdf |date=20080513083842 }}&lt;br /&gt;
*[http://www.mew.cx/glsl_quickref.pdf GLSL 參考表]{{Wayback|url=http://www.mew.cx/glsl_quickref.pdf |date=20070207041043 }}&lt;br /&gt;
*[https://web.archive.org/web/20130526132418/http://oss.sgi.com/projects/ogl-sample/registry/ARB/fragment_shader.txt OpenGL 片斷著色器規格]&lt;br /&gt;
*[https://web.archive.org/web/20130804063101/http://oss.sgi.com/projects/ogl-sample/registry/ARB/vertex_shader.txt OpenGL 頂點著色器規格]&lt;br /&gt;
*[http://oss.sgi.com/projects/ogl-sample/registry/ARB/program_object.txt OpenGL 程式規格]{{dead link|date=2017年11月 |bot=InternetArchiveBot |fix-attempted=yes }}&lt;br /&gt;
*[http://www.opengl.org 官方 OpenGL 網站]{{Wayback|url=http://www.opengl.org/ |date=20110226000710 }}&lt;br /&gt;
&lt;br /&gt;
*[http://www.lighthouse3d.com/opengl/ 來自 Lighthouse3D 的教學和範例]{{Wayback|url=http://www.lighthouse3d.com/opengl/ |date=20070320160322 }}&lt;br /&gt;
*[https://web.archive.org/web/20071126072642/http://nehe.gamedev.net/ 來自 NeHe Productions 的教學和範例]&lt;br /&gt;
*[http://www.typhoonlabs.com GLSL 開發環境]{{Wayback|url=http://www.typhoonlabs.com/ |date=20191022073212 }}&lt;br /&gt;
*[http://www.ati.com/developer/rendermonkey/ RenderMonkey 著色器開發環境]{{Wayback|url=http://www.ati.com/developer/rendermonkey/ |date=20061004113827 }}&lt;br /&gt;
*[https://web.archive.org/web/20060305194538/http://www.geist3d.org/ Geist3D 繪圖引擎，內含 GLSL 編輯器]&lt;br /&gt;
*[http://sourceforge.net/projects/lumina/ Lumina 跨平台 GLSL IDE]{{Wayback|url=http://sourceforge.net/projects/lumina/ |date=20070302213333 }}&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
{{程序设计语言|C}}&lt;br /&gt;
&lt;br /&gt;
{{Authority control}}&lt;br /&gt;
&lt;br /&gt;
[[Category:繪圖函式庫]]&lt;br /&gt;
[[Category:三维计算机图形学]]&lt;br /&gt;
[[Category:C語言家族]]&lt;br /&gt;
[[Category:OpenGL]]&lt;br /&gt;
[[Category:著色器語言]]&lt;/div&gt;</summary>
		<author><name>imported&gt;ExultantEditor</name></author>
	</entry>
</feed>