GLSL

✍ dations ◷ 2025-07-14 06:44:02 #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 开发工具:

相关

  • 托克劳群岛面积以下资讯是以2016年10月估计国家领袖国内生产总值(购买力平价) 以下资讯是以2017年估计国内生产总值(国际汇率) 以下资讯是以1993年估计托克劳(英语:Tokelau),也称联合群岛或尤
  • 数据建模在软件工程中,数据建模是运用正式的数据建模技术,建立信息系统的数据模型的过程。数据建模是一种用于定义和分析数据的要求和其需要的相应支持的讯息系统的过程。因此,数据建模
  • 补给线补给线泛指军事上运输军队所需一切有形物资及兵力从后方到前线的交通路线,可能是海上、陆上、航空的形式,也常作为后送伤兵和撤军时的路线,若此线被敌军得知并有效切断而前线物
  • 714航班《714航班》(法语:;英语:)是《丁丁历险记》的第22部作品,也是倒数第二部完整作品。作者是比利时漫画家艾尔吉,于1968年初版。故事的主要舞台是在南太平洋,特色之一是外星生物的登场
  • 阿瑟河坐标:51°41′33″N 7°50′9″E / 51.69250°N 7.83583°E / 51.69250; 7.83583阿瑟河(德语:Ahse),是德国的河流,位于该国西部,处于北莱茵-威斯特法伦州,属于利珀河的支流,河道全长5
  • 胡春杨胡春杨(1999年2月5日-),河北保定人,中国内地男歌手,偶像男团UNINE成员。现就读于河北传媒学院新闻传播学院播音与主持艺术专业。乐华娱乐旗下训练生,2019年1月参加爱奇艺选秀节目《
  • 黄省三黄省三(1882年-1965年),名思省,男,广东番禺人,中国中医学家,曾任第二、三、四届全国政协委员。
  • 巴耆贤巴耆贤( 1824年6月26日-1895年1月4日),圣母圣心会会士,天主教蒙古代牧区及蒙古中境代牧区主教(1874年10月22日– 1895年1月4日)。 1824年6月26日,巴耆贤生于比利时Weelde,1853年12月1
  • 聂剑光聂剑光(1711年-1796年),名鈫,泰安(山东省泰安市)人。早年曾任泰安府吏,不久离去。剑光刻意史乘,“有泉石癖,摩挲金石,穷老不倦”。乾隆二十五年(1760年)参与《泰安县志》的编纂工作。与刘其旋交游,“每同攀幽跻险、探稽往躅”,遍览泰山等名胜,“穷山水幽阻处,采古今金石文,”以三十年的岁月,用心撰述,其间凡四易其稿,著成《泰山道里记》四万余字,全书“以路为纲”,“以山之脉胳为文之脉络”,“由近及远,由正路以及四隅,较若列眉”,记载了泰山、岱东、岱西、徂徕、灵岩、琨瑞等十二支脉,考证谨严,立论不拘古
  • 奥什利亚克岛奥什利亚克岛(克罗地亚语:Ošljak),克罗地亚亚得里亚海部分的一个岛屿,总面积0.3平方千米(74英亩),位于达尔马提亚海岸对岸、扎达尔和乌格连岛之间。根据2011年人口普查,该岛唯一一个有人居住的村庄位于西边的海岸,面向乌格连岛的佩勒科(英语:Preko)和卡利(英语:Kali, Croatia)之间的城镇,居民29人。最高点为拉扎雷托山(Lazaret),海拔90米(300英尺)奥什利亚克岛旧称卡卢杰拉岛(意大利语:Calugerà),以该岛昔日的主人、在岛上修建避暑庄园和花园的著名家族卡卢杰拉家