存储着色器简介
存储着色器是属于OpenGL固定管线下的着色器。
存储着色器初始化
GLShaderManager shaderManager;
shaderManagerr.InitializeStockShaders();
存储着色器种类
单元着色器
GLShhaderManager::UseStockShader(GLT_SHHADER_IDENTITY, GLfloat vColor[4]);
- 参数1:单元着色器
- 参数2:颜色
使用场景:绘制默认OpenGL坐标系下(-1,1)下图形,图形所有片段都会以一种颜色填充。
平面着色器
GLShaderManager::UseStockShader(GLT_SHADER_FLAT, GLfloat mvp[16], GLfloat vColor[4]);
- 参数1:平面着色器
- 参数2:允许变化的4X4矩阵
- 参数3:颜色
使用场景:在绘制图形时,可以应用变换(模型/投影变化)。
上色着色器
GLShaderManager::UseStockShader(GLT_SHADER_SHADEED, GLfloat mvp[16]);
- 参数1:上色着色器
- 参数2:允许变化的4X4矩阵
使用场景:在绘制图形时,可以应用变换(模型/投影变换),颜色将会平滑地插入到顶点之间称为平滑着色。
默认光源着色器
GLShaderManager::UseStockShader(GLT_SHADER_DEFAULT_LIGHT, GLfloat mvMatrix[16], GLfloat pMatrix[16], GLfloat vColor[4]);
- 参数1:默认光源着色器
- 参数2:模型4X4矩阵
- 参数3:投影4X4矩阵
- 参数4:颜色值
使用场景:在绘制图形时,可以应用变换(模型/投影变化),这种着色器会使接触到的图形产生阴影和光照的效果。
点光源着色器
GLShaderManager::UseStockShader(GLT_SHADER_POINT_LIGHT_DIEF, GLfloat mvMatrix[16], GLfloat pMatrix[16], GLfloat vLightPos[3], GLfloat vColor[4]);
- 参数1:点光源着色器
- 参数2:模型4X4矩阵
- 参数3:投影4X4矩阵
- 参数4:点光源的位置
- 参数5:漫反射颜色值
使用场景:在绘制图形时,可以应用变换(模型/投影变化),这种着色器会使接触到的图形产生阴影和光照的效果。它与默认光源着色器非常类似,区别只是光源位置可能是特定的。
纹理替换矩阵着色器
GLShaderManager::UseStockShader(GLT_SHADER_TEXTURE_REPLACE, GLfloat mvMatrix[16], GLint nTextureUnit);
- 参数1:纹理替换矩阵着色器
- 参数2:模型4X4矩阵
- 参数3:纹理单元
使用场景:在绘制图形时,可以应用变换(模型/投影变化),这种着色器通过给定的模型视图投影矩阵,使用纹理单元来进行颜色填充,其中每个像素点的颜色是从纹理中获取。
纹理调整着色器
GLShaderManager::UseStockShader(GLT_SHADER_TEXTURE_MODULATE, GLfloat mvMatrix[16], CLfloat vColor[4], GLint nTextureUnit);
- 参数1:纹理调整着色器
- 参数2:模型4X4矩阵
- 参数3:颜色值
- 参数4:纹理单元
使用场景:在绘制图形时,可以应用变换(模型/投影变化),这种着色器通过给定的模型视图投影矩阵。着色器将一个基本色乘以一个取自纹理单元nTextureUnit的纹理,将颜色与纹理进行颜色混合后才填充到片段中。
纹理光源着色器
GLShaderManager::UseStockShader(GLT_SHADER_TEXTURE_POINT_LIGHT_DIEF, GLfloat mvMatrix[16], CGfloat vLightPos[3], CLfloat vBaseColor[4], GLint nTextureUnit);
- 参数1:纹理光源着色器
- 参数2:模型4X4矩阵
- 参数3:投影4X4矩阵
- 参数4:点光源位置
- 参数5:颜色值(几何图形的基本色)
- 参数6:纹理单元
使用场景:在绘制图形时,可以应用变换(模型/投影变化),这种着色器通过给定的模型视图投影矩阵,着色器将一个纹理通过漫反射照明计算进行调整(相乘)。