OpenGL 渲染
OpenGL 渲染架构
2339413-74fccbac9e1e8499.png- client 代表就是客户端类似于 iOS/安卓
- server 代表后台服务器
- Vertex Shader(顶点着色器) 和 Fragment Shader(片段着色器) 我们编码程序主要针对这两个着色器
- 顶点着色器-->处理从客户机输入的数据、应用变换、进行其他的类型的数学运算来计算关照效果、位移、颜色值等等, Attributes(传一些属性值就像给控件添加属性一样) 只能作用于顶点着色器 不能作用于偏远着色器。
- Uniform值可以作用于顶点和片元着色器, 一般固定值, 例如视频着色 YUV 通过固定的算法及转换矩阵转成 RGB
存储着色器:
- 定义一个着色器管理对象(GLShaderManager)
着色器初始化:shaderManager.InitializeStockShaders();
-
单元着色器 GLShaderManager::UserStockShader(GLT_ATTRIBUTE_VERTEX,GLfloat vColor[4]);
参数:1.存储着色器种类:
2.存储着色器颜色 -
平面着色器GLShaderManager::UserStockShader(GLT_SHADER_FLAT,GLfloat mvp[16],GLfloat vColor[4]);
参数:1.平面着色器
2.允许变化的4*4矩阵
3.颜色 -
上色着色器(平滑着色)GLShaderManager::UserStockShader(GLT_SHADER_SHADED,GLfloat mvp[16]);
参数:1.存储着色器顶点分量
2.存储着色器颜色分量 -
默认光源着色器(平行光/太阳光)GLShaderManager::UserStockShader(GLT_SHADER_DEFAULT_LIGHT,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vColor[4]);
参数:1.默认光源着色器
2.模型视图矩阵
3.投影矩阵
4.颜色值 -
点光源着色器GLShaderManager::UserStockShader(GLT_SHADER_POINT_LIGHT_DIEF,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat vColor[4]);
参数 1.点光源着色器
2.模型视图矩阵
3.投影矩阵
4.视点坐标光源位置
5.颜色值 -
纹理替换矩阵着色器GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_REPLACE,GLfloat mvMatrix[16],GLint nTextureUnit);
参数 1.存储着色器种类-纹理替换矩阵着色器
2.模型 4*4 矩阵
3.纹理单元 -
纹理调整着色器GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_MODULATE,GLfloat mvMatrix[16],GLfloat vColor[4],GLint nTextureUnit);
参数 1.存储着色器种类-纹理调整着色器
2.模型 4*4 矩阵
3.颜色值
4.纹理单元 -
纹理光源着色器GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_POINT_LIGHT_DIEF,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat vBaseColor[4],GLint nTextureUnit);
参数 1.纹理光源着色器
2.投影矩阵
3.视觉空间中的光源位置
4.几何图形的基本色
5.将要使用的纹理单元
网友评论