在开发中,要求不高的话,OpenGL提供的固定存储着色器可以满足我们的要求。这些存储着色器由GLTools的C++类GLShaderManager进行管理,只需要传递不同存储器所需要的数据到参数列表就可以使用了,主要有以下几种存储着色器:
单位着色器
- 单位着色器只是简单地使用默认的笛卡尔坐标系(坐标范围(-1.0,1.0))。所有片段都应用同一种颜色,几何图形为实心和未渲染的。
/*
参数1: 存储着⾊器种类-单元着⾊器
参数2: 颜⾊
*/
GLShaderManager::UserStockShader(GLT_SHADER_IDENTITY,GLfloat vColor[4]);
平面着色器
- 平面着色器将统一着色器进行了扩展,允许为几何图形变换指定一个4x4变换矩阵。经常被称为“模型视图投影矩阵”。
/*
参数1: 存储着⾊器种类-平⾯着⾊器
参数2: 允许变化的4*4矩阵
参数3: 颜⾊
*/
GLShaderManager::UserStockShader(GLT_SHADER_FLAT,GLfloat mvp[16],GLfloat vColor[4]);
上⾊着⾊器
- 上色着色器唯一的Uniform值就是在几何图形中应用的变换矩阵。颜色值将被平滑地插入顶点之间(称为平滑着色)。
/*
参数1: 存储着⾊器种类-上⾊着⾊器
参数2: 允许变化的4*4矩阵
*/
GLShaderManager::UserStockShader(GLT_SHADER_SHADED,GLfloat mvp[16]);
默认光源着⾊器
- 默认光源着色器本质上是着色器使对象产生阴影和光照的效果。
/*
参数1: 存储着⾊器种类-默认光源着⾊器
参数2: 模型4*4矩阵
参数3: 投影4*4矩阵
参数4: 颜⾊值
*/
GLShaderManager::UserStockShader(GLT_SHADER_DEFAULT_LIGHT,GLfloat
mvMatrix[16],GLfloat pMatrix[16],GLfloat vColor[4]);
点光源着⾊器
- 点光源着色器和默认光源着色器很相似,但是光源位置可能是特定的。
/*
参数1: 存储着⾊器种类-点光源着⾊器
参数2: 模型4*4矩阵
参数3: 投影4*4矩阵
参数4: 点光源的位置
参数5: 漫反射颜⾊值
*/
GLShaderManager::UserStockShader(GLT_SHADER_POINT_LIGHT_DIEF,GLfloat
mvMatrix[16],GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat vColor[4]);
纹理替换矩阵着⾊器
- 纹理替换矩阵着⾊器通过给定的模型视图投影矩阵,使用绑定到nTextureUnit指定的纹理单元的纹理对几何图形进行变换。片段颜色是直接从纹理样本中直接获取的。
/*
参数1: 存储着⾊器种类-纹理替换矩阵着⾊器
参数2: 模型4*4矩阵
参数3: 纹理单元
*/
GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_REPLACE,GLfloat
mvMatrix[16],GLint nTextureUnit);
纹理调整着⾊器
- 纹理调整着⾊器将一个基本色乘以一个自纹理单元nTextureUnit的纹理。
/*
参数1: 存储着⾊器种类-纹理调整着⾊器
参数2: 模型4*4矩阵
参数3: 颜⾊值
参数4: 纹理单元
*/
GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_MODULATE,GLfloat
mvMatrix[16],GLfloat vColor[4],GLint nTextureUnit);
纹理光源着⾊器
- 纹理光源着色器将一个纹理通过漫反射照明计算进行调整(相乘),光线在视觉空间中的位置给定的。
/*
参数1: 存储着⾊器种类-纹理光源着⾊器
参数2: 模型4*4矩阵
参数3: 投影4*4矩阵
参数4: 点光源位置
参数5: 颜⾊值(⼏何图形的基本⾊)
参数6: 纹理单元
*/
GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_POINT_LIGHT_DIEF,G
Lfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat
vBaseColor[4],GLint nTextureUnit);
网友评论