OpenGL-UseStockShader(固定管线/存储着色器

2020-07-06  本文已影响0人  呆呆笨

在OpenGL 3.1之前,只有一种固定管线着色器,而在3.1之后被启用,取而代之的是可编程管线.

初始化

GLShaderManager shaderManager;
shaderManager.InitializeStockShaders();

设置存储器的类型:
函数原型:GLint UseStockShader(GLT_STOCK_SHADER nShaderID, ...);

类型说明

enum GLT_STOCK_SHADER {
    GLT_SHADER_IDENTITY = 0,
    GLT_SHADER_FLAT,
    GLT_SHADER_SHADED,
    GLT_SHADER_DEFAULT_LIGHT,
    GLT_SHADER_POINT_LIGHT_DIFF,
    GLT_SHADER_TEXTURE_REPLACE,
    GLT_SHADER_TEXTURE_MODULATE,
    GLT_SHADER_TEXTURE_POINT_LIGHT_DIFF,
    GLT_SHADER_TEXTURE_RECT_REPLACE,
    GLT_SHADER_LAST
};

1.单位着色器/单元着色器: GLT_SHADER_IDENTITY

在坐标范围为(-1.0, 1.0)内,所有片段都应用同一种颜色。
参数1:着色器类型
  参数2:颜色参数

shaderManager.UserStockShader(GLT_SHADER_IDENTITY,GLfloat vColor[4]);
2.平面着色器:GLT_SHADER_FLAT

可以为几何图形变化指定一个44变换矩阵,该矩阵被称为“模型视图投影矩阵”。
参数1:着色器类型
  参数2:4
4变换矩阵
  参数3:颜色参数

shaderManager.UserStockShader(GLT_SHADER_FLAT,GLfloat mvp[16],GLfloat vColor[4]);

3.上色着色器:GLT_SHADER_SHADED

将颜色平滑的插入到顶点之间,进行平滑着色。
参数1:着色器类型
  参数2:颜色参数

shaderManager.UserStockShader(GLT_SHADER_SHADED,GLfloat vColor[4]);

4.默认光源着色器:GLT_SHADER_DEFAULT_LIGHT

为图形产生阴影和光照效果。
参数1:着色器类型
  参数2:模型视图矩阵
  参数3:投影矩阵
  参数4:颜色参数

shaderManager.UserStockShader(GLT_SHADER_DEFAULT_LIGHT,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vColor[4]);

5.点光源着色器:GLT_SHADER_POINT_LIGHT_DIFF

为图形产生阴影和光照效果。与默认光源着色器非常类似,区别在与点光源着色器可以指定光源位置。
参数1:着色器类型
  参数2:模型视图矩阵
  参数3:投影矩阵
  参数4:视点坐标光源位置
  参数5:颜色参数

shaderManager.UserStockShader(GLT_SHADER_DEFAULT_LIGHT,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vColor[4]);

6.纹理替换矩阵着色器:GLT_SHADER_TEXTURE_REPLACE

通过给定的模型视图投影矩阵,使用纹理单元来进行填充,其每个像素点的颜色是从纹理中获取。
参数1:着色器类型
  参数2:模型视图矩阵
  参数3:纹理单元

shaderManager.UserStockShader(GLT_SHADER_TEXTURE_REPLACE,GLfloat mvMatrix[16],GLint nTextureUnit);

7.纹理调整着色器:GLT_SHADER_TEXTURE_MODULATE

通过给定的模型视图投影矩阵,将一个基本色乘以一个取自纹理单元nTextureUnit的纹理,将颜色与纹理进行混合后填充到片段中。
参数1:着色器类型
  参数2:模型视图矩阵
  参数3:颜色参数
  参数4:纹理单元

shaderManager.UserStockShader(GLT_SHADER_TEXTURE_MODULATE,GLfloat mvMatrix[16],GLfloat vColor[4],GLint nTextureUnit);

8.纹理光源着色器:GLT_SHADER_TEXTURE_POINT_LIGHT_DIFF

通过给定的模型视图投影矩阵,将一个纹理通过漫反射照明计算进行调整(相乘)。
参数1:着色器类型
  参数2:模型视图矩阵

参数3:视觉空间中的光源位置
  参数4:几何图形的基本色
  参数5:需要处理的纹理单元

shaderManager.UserStockShader(GLT_SHADER_TEXTURE_POINT_LIGHT_DIEF,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat vBaseColor[4],GLint nTextureUnit);

GLShaderManager 预定义的标识符

标识符 描述
GLT_ATTRIBUTE_VERTEX 3分量(x, y, z)顶点位置
GLT_ATTRIBUTE_COLOR 4分量(r, g, b, a)颜色值
GLT_ATTRIBUTE_NORMAL 3分量(x, y, z)表面法线
GLT_ATTRIBUTE_TEXTURE0 第一对 2 分量(s ,t)纹理坐标
GLT_ATTRIBUTE_TEXTURE1 第二对 2 分量(s ,t)纹理坐标
上一篇 下一篇

猜你喜欢

热点阅读