New程序媛OpenGL全解析之—GLSL语法基础

大家好!


本期丹丹带给大家的是GLSL语法基础

本期因为用文字即可描述清楚所以没有相关的视频文件。

大家也可以直接在bi站首页搜索:New程序媛 ,即可看到往期相应视频


OpenGL从3.1版本开始,固定功能管线从核心模式中去除,所以要求我们必须使用着色器来完成工作。而无论是 OpenGL还是其他图形API的着色器,通常都是通过一种特殊的编程语言去编写的。对于 OpenGL来说,我们使用的是 GLSL(Opengl Shading Langua)它是在OpenGL2.0版本左右发布的(在之前它属于扩展功能)。它与 OpenGL的发展是同时进行的,与每个新版本的 OpenGL一起更新。GLSL是一种专门为图形开发设计的编程语言,但它与“C”语言非常类似,也有C++的影子。


4.3版本中的图形管线有4个处理阶段,还有一个通用计算阶段,每个阶段都需要由一个专门的着色器进行控制。

1)顶点着色阶段( vertex shading stage)

2)细分着色阶段( tessellation shading stage)

3)几何着色阶段( eometry shading stage)

4)片元着色阶段(Fragment shading stage)

5)计算着色阶段( Compute shading stage)

1-4就是四个处理阶段,而5就是计算着色阶段,它与前四个阶段不同,它并不是图形管线的一部分,而是在程序中相对独立的一个阶段。计算着色阶段处理的并不是顶点和片元这类图形数据,而是计算应用程序给定范围的内容。


如下是一个典型的着色器:

#version version_numberin 

type in_variable_name;

 in type in_variable_name; 

 out type out_variable_name; 

 uniform type uniform_name;

int main()

{

  // 处理输入并进行一些图形操作   

...  

  // 输出处理过的结果到输出变量

   out_variable_name = weird_stuff_we_processed; 

}

OpenGL定义了in变量将数据拷贝到着色器中,out变量将着色器的内容拷贝出去,这些变量的值在执行着色器的时候更新,而另一类变量,uiform变量,是从应用程序中接收数据的,他们不会随着顶点或者片元的变化而发生任何改变。


首先让我们看看OpenGL变量:

命名规则:由字母数字以及下划线构成,不能以为数字或下划线开始,变量名也不可包含连续的下划线,因为这些名称是GLSL保留使用的。


基本数据类型:

float:IEEE 32位浮点数

double:IEEE 64位浮点数

int: 有符号二进制补码的32位整数

uint:无符号的32位整数

bool:布尔

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值