openGL学习笔记:着色器的理解,以及geometry shader的用法

在跟着learnopengl的教程(https://learnopengl.com/Advanced-OpenGL/Geometry-Shader)学习几何着色器(geometry shader)的时候,遇到了一些理解问题,现在解决了,记录一下。

当然中文我也不知道叫啥,但愿差不多吧(希望不要差太多ha)。

在我今天学到进度里,关于着色器的学习有三种,vertex shader, fragment shader, geometry shader,着色器的作用是write data to the GPU card。而这三种着色器的作用又有不同。

1 vertex shader

主要负责to process the primitive vertices里的数据,比如顶点,法线,颜色,深度等信息。因为处理的是原始数据,所以在这里可以做一些变量的声明,比如in, out, sampler2D, uniform,samplerCube, 诸如纹理,也只是坐标和像素组成的,这在纹理坐标texture coordinate中更加直白(纹理的左下角坐标是(0,0),右上角坐标是(1,1), 当使用(0.5,0.5)时,表示一张图片左下1/4的大小)。

2 fragment shader

主要负责to output the color,我理解是每个fragment program每次在screen space里绘图时,只绘制一个像素(所以我一直觉得叫像素处理器之类的,更直白)。 在这里,你可以通过设置模板值等方式,决定是否让fragment shader绘制这个像素。

3 geometry shader

介于前两者中间的,用来处理vertex,colord等信息的中间着色器。开始我一直没理解,后来发现每次在用EndPrimitive()后,传递给 fragment shader的数据是单一的,或者说,处理的时候只处理一个primitive vertex 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值