2、OpenGL | 着色器Shaders in the Graphics Pipeline

本文详细介绍了OpenGL中的GL SL语言,包括顶点属性、数据结构和着色器的输入输出。GL SL是一种专门针对向量和矩阵操作的语言,支持多种数据结构如vector和matrix。顶点着色器接收顶点数据,fragment着色器产生最终的颜色输出。数据交换依赖于output和input变量,而uniform用于将CPU数据传送到GPU。文章还展示了如何设置和修改uniform值。
摘要由CSDN通过智能技术生成

一、GL SL (shading language)

是一中类似C的语言,包含了专门针对向量和矩阵操作的有用特性。
着色器代码编写,总是以版本声明开始,然后是输入和输出变量的列表,uniform和Main函数。
结构如下:

#version version_number
in type in_variable_name;
in type in_variable_name;
out type out_variable_name; 

uniform type uniform_name;
int main()
{
   
// Process input(s) and do some weird graphics stuff
...
// Output processed stuff to output variable
out_variable_name = weird_stuff_we_processed;
}

vertex shader中,每个输入变量也叫顶点属性(Vertex Attribute)。顶点属性是有上限的(第一个三角形介绍的位置、颜色、法向量、纹理等顶点属性),它一般由硬件来决定。
OpenGL确保至少有16个包含4分量的顶点属性可用,但有的硬件允许更多的顶点属性,可以查询GL_MAX_VERTEX_ATTRIBS来获取具体的上限:

GLint nrAttributes;
glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &nrAttributes);
std
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值