GLSL

✍ dations ◷ 2025-11-13 20:30:08 #GLSL

GLSL - OpenGL Shading Language 也称作 GLslang,是一个以C语言为基础的高阶着色语言。它是由 OpenGL ARB 所建立,提供开发者对绘图管线更多的直接控制,而无需使用汇编语言或硬件规格语言。

随着近年来绘图卡的进步,已在渲染管线中的顶点(vertex)和片断(fragment)层次中,加入更具弹性的新功能。达到在这个层次中,使用片断和顶点着色器的可编程性。

最初这个功能是以组合语言撰写着色器来达到的。组合语言对开发者的使用是不直观而复杂的。OpenGL ARB 建立了 OpenGL 着色语言,为 GPU 的程式设计提供更加直观的方法,当维护开放标准的时候,就有助于带动 OpenGL 的历史。

最初 OpenGL 1.5 是以扩充形式引入,后来 OpenGL ARB(英语:OpenGL Architecture Review Board) 在 OpenGL 2.0 核心中正式纳入 GLSL。自 1992 年建立的OpenGL 1.0 起,OpenGL 2.0 是第一个 OpenGL 的大修改版。

使用 GLSL 有如下好处:

OpenGL 着色语言规格定义了 22 个基本资料类型,有些用法与 C 相同,其它的是绘图处理器特有的。

OpenGL 着色语言提供类似于 C语言的运算子。给开发者编写着色器的灵活性。GLSL 包含了 C和C++运算子,除了位元运算子和指标以外。

类似于 C语言,GLSL 支援循环和分支,包括 if、else、if/else、for、do-while、break、continue 等。

支援使用者定义函式,且各种常用的函式也已内建。这也就让绘图卡制造商,能够在硬件层次上最佳化这些内建的函式。许多函式与 C 语言相同,如 exp() 以及 abs(),其它绘图编程特有的,如 smoothstep() 以及 texture2D()。

GLSL 着色器不是独立的应用程序;其需要使用 OpenGL API 的应用程序。C、C++、C#、Delphi 和 Java 皆支援 OpenGL API,且支援 OpenGL 着色语言。

GLSL 着色器本身只是简单的字串集,这些字串集会传送到硬件厂商的驱动程式,并从程式内部的 OpenGL API 进入点编译。着色器可从程式内部或读入纯文字档来即时建立,但必须以字串形式传送到驱动程式。

用以编译、连结并传送参数到 GLSL 程式的 API 集,已在三个 OpenGL 扩展中规定,且即将成为 OpenGL 2.0(页面存档备份,存于互联网档案馆) 核心的一部分。这些 API 可在以下扩展中找到:

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

GLSL 片断着色器的简单范例

void main(void){    gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);}

工具

GLSL 着色器可以事先建立和测试,现有以下 GLSL 开发工具:

相关

  • 淋巴瘤淋巴瘤(英文:lymphoma)又称淋巴癌,是由淋巴细胞病变造成的血液细胞瘤(英语:blood cell tumors)。有时候这个词汇被用来单指癌症、而不包括良性的肿瘤。症状包括淋巴结肿大 (通常为无
  • 油酸油酸(英语:Oleic acid)是一种单不饱和Omega-9脂肪酸,存在于动植物体内。化学式C18H34O2 ,结构简式 CH3(CH2)7CH = CH(CH2)7COOH。 英文名称“oleic acid”源自“橄榄”(Olive)。油
  • 议会-经理制议会-经理制政府(Council–manager government)是主要的两种美国代议政制地方政府组成方式之一,相对于市长-议会制政府。在美国大部分人数多于1万2000人的城市都使用这个方式来
  • 埃尔弗峰 (斯图拜阿尔卑斯山脉)坐标:47°30′56″N 10°33′13″E / 47.51556°N 10.55361°E / 47.51556; 10.55361埃尔弗峰(德语:Elferspitze),是奥地利的山峰,位于该国西部,由蒂罗尔州负责管辖,属于斯图拜阿尔
  • 达马特·马哈茂德·贾拉尔丁帕夏达马特·马哈茂德·贾拉尔丁帕夏(土耳其语:Damat Mahmud Celâleddin Paşa;1853年?月?日-1903年12月17日),是奥斯曼帝国的政治家、作家,曾在帝国驻法国领事馆、帝国司法部任职。后因
  • 基斯·梵·邓肯基斯·梵·邓肯(Kees van Dongen,1877年1月26日-1968年5月28日)是荷兰的野兽派画家。1877年,生于荷兰鹿特丹郊外的酿酒人家庭。一边帮忙酿酒,一边学习美术。1899年,转居巴黎。1905
  • 撒迪厄斯·麦科特尔撒迪厄斯·麦科特尔(英语:Thaddeus McCotter,1965年8月22日-)是一名美国政治家、广播电台主持人。他曾于2003年至2012年担任密歇根州第十一国会选区联邦众议员。2011年7月2日至20
  • 第13届东京国际电影节第13届东京国际电影节于2000年10月28日至11月5日在日本东京举行东京国际电影节。
  • 鲍勃·霍格西特罗伯特·L·霍格西特(英语:Robert L. Hogsett,1941年1月29日-1984年12月5日),美国NBA联盟前职业篮球运动员。
  • 中间锦鸡儿中间锦鸡儿(学名:)是一种豆科锦鸡儿属植物。这种植物于内蒙古的锡林郭勒盟西部、乌兰察布盟北部、巴彦淖尔盟、阿拉善盟、伊克昭盟和宁夏及与其邻近的黄土高原地区均有野生种分布。