OpenGL存储着色器介绍

224 阅读3分钟

存储着色器简介

存储着色器是属于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:纹理单元

使用场景:在绘制图形时,可以应用变换(模型/投影变化),这种着色器通过给定的模型视图投影矩阵,着色器将一个纹理通过漫反射照明计算进行调整(相乘)。