OpenGL存储着色器
在OpenGL 3.0 之前,OpenGL包含固定功能的管线,这些固定管线(或者叫存储着色器)可以用来处理光照、坐标变换、裁剪等。但由于OpenGL的使用实际使用场景丰富而多变,固定管线无法自定义的缺点被大多数开发者所诟病,所以后来加入了可编程管线,让开发者可以使用GLSL自定义管线。下面我们就来了解一下OpenGL中的这个固定管线(存储着色器)。
-
单元着色器
使用场景:
绘制默认OpenGL坐标系(-1, 1)下的图形,图形所有片段都以一种颜色填充。
使用方式:
GLShaderManager::UserStockShader(GLT_SHADER_IDENTITY, GLfloat vColor[4]);
参数说明:
参数 说明 GLT_SHADER_IDENTITY 存储着色器种类-单元着色器 vColor[4] 有4个元素的一维数组,表示RGBA颜色 -
平面着色器
使用场景:
在绘制图形是,可以应用变换(模型/投影变化)。
使用方式:
GLShaderManager::UserStockShader(GLT_SHADER_FLAT, GLfloat mvp[16], GLfloat vColor[4]);
参数说明:
参数 说明 GLT_SHADER_FLAT 存储着色器种类-平面着色器 mvp[16] 有16个元素的一维数组,表示允许变化的4x4矩阵 vColor[4] 有4个元素的一维数组,表示RGBA颜色 -
上色着色器
使用场景:
在绘制图形时,可以应用变换(模型/投影变化) 颜色将会平滑地插入到顶点之间称为平滑着色。
使用方式:
GLShaderManager::UserStockShader(GLT_SHADER_SHADED, GLfloat mvp[16]);
参数说明:
参数 说明 GLT_SHADER_SHADED 存储着色器种类-上色着色器 mvp[16] 有16个元素的一维数组,表示允许变化的4x4矩阵 -
默认光源着色器
使用场景:
在绘制图形时,可以应用变换(模型/投影变化) 这种着色器会时绘制的图形产生阴影和光照效果。
使用方式:
GLShaderManager::UserStockShader(GLT_SHADER_DEFAULT_LIGHT, GLfloat mvMatrix[16], GLfloat pMatrix[16], GLfloat vColor[4]);
参数说明:
参数 说明 GLT_SHADER_DEFAULT_LIGHT 存储着色器种类-默认光源着色器 mvMatrix[16] 有16个元素的一维数组,表示模型的4x4矩阵 pMatrix[16] 有16个元素的一维数组,表示投影的4x4矩阵 vColor[4] 有4个元素的一维数组,表示RGBA颜色 -
点光源着色器
使用场景:
在绘制图形时,可以应用变换(模型/投影变化) 这种着色器会使绘制的图形产生阴影和光照的效果。它与默认光源着色器非常类似,区别只是光源位置可能是特定的。
使用方式:
GLShaderManager::UserStockShader(GLT_SHADER_POINT_LIGHT_DIEF, GLfloat mvMatrix[16], GLfloat pMatrix[16], GLfloat vLightPos[3], GLfloat vColor[4]);
参数说明:
参数 说明 GLT_SHADER_POINT_LIGHT_DIEF 存储着色器种类-点光源着色器 mvMatrix[16] 有16个元素的一维数组,表示模型的4x4矩阵 pMatrix[16] 有16个元素的一维数组,表示投影的4x4矩阵 vLightPos[3] 有3个元素的一维数组,表示光源的坐标 vColor[4] 有4个元素的一维数组,表示RGBA颜色 -
纹理替换矩阵着色器
使用场景:
在绘制图形时,可以应用变换(模型/投影变化) 这种着色器通过给定的模型视图投影矩阵,使用纹理单元来进行颜色填充。其中每个像素点的颜色是从纹理中获取的。
使用方式:
GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_REPLACE, GLfloat mvMatrix[16], GLint nTextureUnit);
参数说明:
参数 说明 GLT_SHADER_TEXTURE_REPLACE 存储着色器种类-纹理替换矩阵着色器 mvMatrix[16] 有16个元素的一维数组,表示模型的4x4矩阵 nTextureUnit 纹理单元 -
纹理调整着色器
使用场景:
在绘制图形时,可以应用变换(模型/投影变化) 这种着色器通过给定的模型投影矩阵,着色器将一个基本色乘以一个取自纹理单元nTextureUnit的纹理,将颜色与纹理进行颜色混合后才填充到片段中。
使用方式:
GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_MODULATE, GLfloat mvMatrix[16], GLfloat vColor[4], GLint nTexturnUnit);
参数说明:
参数 说明 GLT_SHADER_TEXTURE_MODULATE 存储着色器种类-纹理调整着色器 mvMatrix[16] 有16个元素的一维数组,表示模型的4x4矩阵 vColor[4] 有4个元素的一维数组,表示RGBA颜色 nTextureUnit 纹理单元 -
纹理光源着色器
使用场景:
在绘制图形时,可以应用变换(模型/投影变化) 这种着色器通过给定的模型视图投影矩阵,着色器将一个纹理通过漫反射照明计算进行调整(相乘)。
使用方式:
GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_POINT_LIGHT_DIEF, GLfloat mvMatrix[16], GLfloat pMatrix[16], GLfloat vLightPos[3], GLfloat vBaseColor[4], GLint nTextureUnit);
参数说明:
参数 说明 GLT_SHADER_TEXTURE_POINT_LIGHT_DIEF 存储着色器种类-纹理光源着色器 mvMatrix[16] 有16个元素的一维数组,表示模型的4x4矩阵 pMatrix[16] 有16个元素的一维数组,表示投影的4x4矩阵 vLightPos[3] 有3个元素的一维数组,表示光源的坐标 vBaseColor[4] 有4个元素的一维数组,表示颜色值(几何图形的基本色) nTextureUnit 纹理单元
网友评论