GLSL

✍ dations ◷ 2025-08-23 18:50:35 #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 开发工具:

相关

  • 平城京平城京是日本奈良时代的京城,地处今奈良市西郊。710年(和铜三年),元明天皇迁都于此。选择定都于此,是受到道教思想“藏风得水”的风水观念影响。平城京模仿唐朝都城长安和北魏都
  • 迈克·波蒂略迈克·波蒂略(Michael Denzil Xavier Portillo,1953年5月26日-)是英国的一位记者、主播、前国会议员、保守党副党魁、英国内阁阁员。他首次当选下议院议员是在1984年。他是撒切
  • 罗星汉罗星汉(缅甸语:လော်စစ်ဟန်,1935年-2013年7月6日),果敢(汉族在缅甸的一支)人,在缅族与果敢族的战争中,成为缅族政府以果制果的角色,是果敢人势力中亲缅的人物,缅甸、老挝、泰国
  • 外青松公路吴淞港桥外青松公路吴淞港桥是上海吴淞江上从上游到下游计算的第一座桥,连接上海市和江苏省的外青松公路。大桥为双向大桥。由于为跨省大桥,桥尚未划车道。在大桥南端有上海市15B号界
  • 化学工程单元操作 (书)《化学工程单元操作》(英语:Unit Operations of Chemical Engineering),于1956年首次出版,是历史最悠久的化学工程学教科书,至今仍广泛地被使用着。最新一版为第七版,于2004年出版,
  • 马塔拉 (斯里兰卡)马塔拉是斯里兰卡的城市,位于该国南岸,由南部省负责管辖,距离首都科伦坡160公里,面积13平方公里,海拔高度2米,2011年人口68,244。
  • 李遵 (明朝)李遵(?-?),字于鸿,浙江宁波府鄞县人,明朝政治人物。父李先嘉,工诗。李遵登万历四十七年(1619年),登己未科进士,历监察御史,出为陕西按察佥事。性高爽脱俗,尝于城北起园亭为别业,位置泉石,有若
  • 克拉巴火山克拉巴火山是印度尼西亚的火山,位于苏拉威西岛北部万鸦老以东,行政方面由北苏拉威西省负责管辖,海拔高度1,995米,山顶有一个长170米、阔250米的火山湖。
  • 根纳季·戈洛夫金根纳季·根纳季耶维奇·戈洛夫金(哈萨克语:Геннадий Геннадьевич Головкин,1982年4月8日-),哈萨克斯坦职业拳击运动员,他目前同时拥有世界拳击组织(WBA)
  • 万丹城隍庙万丹城隍庙,旧名万丹大将庙、陈府城隍庙,是位在屏东县万丹乡中兴路二段407号的祠庙。系清代万丹街庄民为了纪念在林爽文事件阵亡的清朝官兵,在乾隆六十年(1796年)建立的祠庙。民国三十六年(1947年)转型为城隍庙至今。相传乾隆五十一年(1786年)农历十一月,林爽文事件爆发。林爽文的部下庄大田在南台湾击溃清军,其中庄大田部下在万丹街洗劫。之后由清朝将领“陈将军”领军平乱,但“陈将军”与他的部将不幸在万丹街西部的林投巷阵亡。因为传出有“操兵”声响,令庄民敬畏。在乾隆六十年(1795年),由吴善心发起,让万丹