本文为L_Ares个人写作,包括图片皆为个人亲自操作,以任何形式转载请表明原文出处。
一、存储着色器/固定管线的初始化
GLShaderManager shaderManager;
shaderManager.InitializeStockShaders();
二、存储着色器/固定管线的种类
当使用固定管线的时候,不需要考虑第四节中的三条通道,也就是说不需要考虑数据需要经过Attributes、Uniforms、TextureData中的哪个进行传递。
1. 单元着色器
GLShaderManager::UseStockShader(GLT_SHADER_IDENTITY,GLfloat vColor[4]);
参数1:存储着色器种类——单元着色器
参数2:颜色值
使用场景:
会议默认OpenGL坐标系(-1,1)下的图形,并且图形的所有片段都以同一种颜色填充。
2. 平面着色器
GLShaderManager::UseStockShader(GLT_SHADER_FLAT,GLfloat mvp[16],GLfloat vColor[4]);
参数1:存储着色器种类——平面着色器
参数2:允许变化的4*4矩阵
参数3:颜色
使用场景:
需要使用矩阵进行图形变换的时候(模型、投影变换)。
3. 上色着色器
GLShaderManager::UseStockShader(GLT_SHADER_SHADED,GLfloat mvp[16]);
参数1:存储着色器种类——上色着色器
参数2:允许变化的4*4矩阵
使用场景:
需要使用矩阵进行图形变换的时候(模型、投影变换)。
区别:
上色着色器和平面着色器的使用场景非常的相像,他们的唯一区别是:
对每一个像素点的颜色填充方式不同。上色着色器是平滑的填充。虽然在上色着色器里面没有接收颜色值的参数,但是可以通过其他的工具类进行颜色的设置。
4. 默认光源着色器
GLShaderManager::UseStockShader(GLT_SHADER_DEFAULT_LIGHT,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vColor[4]);
参数1:存储着色器种类——默认光源着色器
参数2:模型4*4矩阵
参数3:投影4*4矩阵
参数4:颜色值
使用场景:
在绘制图形时。可以应用变换(模型、投影变换)。默认光源着色器会使绘制的的图形产生阴影和光照效果。
5. 点光源着色器
GLShaderManager::UseStockShader(GLT_SHADER_POINT_LIGHT_DIEF,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat vColor[4]);
参数1:存储着色器种类——点光源着色器
参数2:模型4*4矩阵
参数3:投影4*4矩阵
参数4:点光源的位置坐标
参数5:颜色值(漫反射)
使用场景:
在绘制图形时,可以应用变换(模型、投影变换)。点光源着色器也可以使绘制的图形产生阴影和光照效果。它和默认光源着色器的区别是:点光源的位置是可以指定的。默认光源着色器的光源位置坐标是:(0,0,0,1)
6. 纹理替换矩阵着色器
GLShaderManager::UseStockShader(GLT_SHADER_TEXTURE_REPLACE,GLfloat mvMatrix[16],GLint nTextureUnit);
参数1:存储着色器种类——纹理替换矩阵着色器
参数2:模型4*4矩阵
参数3:纹理单元
使用场景:
在绘制图形时可以应用变换(模型、投影变换)。这种着色器通过给定的模型视图投影矩阵,使用特定的纹理单元对绘制的图形进行填充。绘制图形的每个像素点的颜色都是从给定的纹理中获取。
7. 纹理调整着色器
GLShaderManager::UseStockShader(GLT_SHADER_TEXTURE_MODULATE,GLfloat mvMatrix[16],GLfloat vColor[4],GLint nTextureUnit);
参数1:存储着色器种类——纹理调整着色器
参数2:模型4*4矩阵
参数3:颜色值
参数4:纹理单元
使用场景:
在绘制图形时可以应用变换(模型、投影变换)。这种着色器通过给定的模型视图投影矩阵,着色器将一个基本色乘以一个取自纹理单元nTextureUnit的纹理,将颜色与纹理进行混合后才填充到片段中。
这个混合必须遵循颜色混合方程式,方程式会在后面的文章中详细的说明。
8. 纹理光源着色器
GLShaderManager::UseStockShader(GLT_SHADER_TEXTURE_POINT_LIGHT_DIEF,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat vBaseColor[4],GLint nTextureUnit);
参数1:存储着色器种类——纹理光源着色器
参数2:模型4*4矩阵
参数3:投影4*4矩阵
参数4:点光源位置坐标
参数5:几何图形的基本颜色
参数6:纹理单元
使用场景:
在绘制图形时可以应用变换(模型、投影变换)。这种着色器通过给定的模型矩阵,着色器将一个纹理通过漫反射照明计算进行调整(相乘)。
网友评论