OpenGL有固定管线和可编程管线两种
固定管线
使用固定管线时,不需要开发者过多的去关心渲染的流程,也不允许去干涉顶点渲染和像素渲染的过程, OpenGL内部会帮我们生成一套完整的渲染流程,我们只需传特定的参数给固定管线,即可完成渲染.接下来看看固定管线中我们一般需要控制那些参数:
不同的储存着色器所需要的参数不同,以下按照不同着色器来划分
一.单元着色器
//使用场景: 绘制默认OpenGL 坐标系(-1,1)下图形. 图形所有片段都会以一种颜色填充
//参数1: 存储着色器种类-单元着⾊器
//参数2: 颜⾊
UserStockShader(GLT_SHADER_IDENTITY,GLfloat vColor[4]);
二.平面着色器
//使用场景: 在绘制图形时, 可以应用变换(模型/投影变化).
//参数1: 存储着色器种类-平⾯着⾊器
//参数2: 允许变化的4*4矩阵
//参数3: 颜⾊
UserStockShader(GLT_SHADER_FLAT,GLfloat mvp[16],GLfloat vColor[4]);
三.上色着色器
//使用场景: 在绘制图形时, 可以应用变换(模型/投影变化) 颜色将会平滑地插入到顶点之间 称为平滑着色
//参数1: 存储着⾊器种类-上⾊着⾊器
//参数2: 允许变化的4*4矩阵
UserStockShader(GLT_SHADER_SHADED,GLfloat mvp[16]);
四.默认光源着色器
//使⽤场景: 在绘制图形时, 可以应用变换(模型/投影变化) 这种着⾊器会使绘制的图形产生阴影和光照的效果.
//参数1: 存储着⾊器种类-默认光源着⾊器
//参数2: 模型4*4矩阵
//参数3: 投影4*4矩阵
//参数4: 颜⾊值
UserStockShader(GLT_SHADER_DEFAULT_LIGHT,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vColor[4]);
五.点光源着色器
//使⽤场景: 在绘制图形时, 可以应用变换(模型/投影变化) 这种着⾊器会使绘制的图形产生阴影和光照的效果.它与默认光源着⾊器非常类似,区别只是光源位置可能是特定的.
//参数1: 存储着⾊器种类-点光源着⾊器
//参数2: 模型4*4矩阵
//参数3: 投影4*4矩阵
//参数4: 点光源的位置
//参数5: 漫反射颜⾊值
UserStockShader(GLT_SHADER_POINT_LIGHT_DIEF,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat vColor[4]);
六.纹理替换矩阵着色器
//使⽤场景: 在绘制图形时, 可以应用变换(模型/投影变化)这种着⾊器通过给定的模型视图投影矩阵.使用纹理单元来进行颜⾊填充.其中每个像素点的颜色是从纹理中获取
//参数1: 存储着⾊器种类-纹理替换矩阵着⾊器
//参数2: 模型4*4矩阵
//参数3: 纹理单元
UserStockShader(GLT_SHADER_TEXTURE_REPLACE,GLfloat mvMatrix[16],GLint nTextureUnit);
七.纹理调整着色器
//使⽤场景: 在绘制图形时, 可以应用变换(模型/投影变化)这种着⾊器通过给定的模型视图投影矩阵. 着⾊器将一个基本色乘以一个取自纹理单元nTextureUnit 的纹理.将颜色与纹理进⾏颜⾊混合后才填充到片段中
//参数1: 存储着⾊器种类-纹理调整着⾊器
//参数2: 模型4*4矩阵
//参数3: 颜⾊值
//参数4: 纹理单元
UserStockShader(GLT_SHADER_TEXTURE_MODULATE,GLfloat mvMatrix[16],GLfloat vColor[4],GLint nTextureUnit);
八.纹理调整着色器
//使用场景: 在绘制图形时, 可以应用变换(模型/投影变化)这种着⾊器通过给定的模型视图投影矩阵. 着⾊器将一个纹理通过漫反射照明计算进⾏调整(相乘)
//参数1: 存储着⾊器种类-纹理光源着⾊器
//参数2: 模型4*4矩阵
//参数3: 投影4*4矩阵
//参数4: 点光源位置
//参数5: 颜色值(几何图形的基本色)
//参数6: 纹理单元
UserStockShader(GLT_SHADER_TEXTURE_POINT_LIGHT_DIFF,G Lfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat vBaseColor[4],GLint nTextureUnit);
网友评论