OpenGL渲染流程

2019-05-22  本文已影响0人  瀚_

渲染管线

渲染管线.png
渲染管线简化流程.png

存储着色器

GLShaderManager shaderManager
shaderManager.InitializeStockShaders()
GLShaderManager::UserStockShader(GLT_SHADER_IDENTITY, GLFloat vColor[4])
GLShaderManager::UserStockShader(GLT_SHADER_FLAT, GLFloat mvp[16], GLFloat vColor[4])
mvp[16]: 模型视图投影矩阵
GLShaderManager::UserStockShader(GLT_SHADER_SHADED, GLFloat mvp[16])
GLShaderManager::UserStockShader(GLT_SHADER_DEFAULT_LIGHT, GLFloat mvMatrix[16], GLFloat pMatrix[16], GLFloat vColor[4])
GLT_SHADER_DEFAULT_LIGHT: 默认光源着色器
mvMatrix[16]: 模型视图矩阵
pMatrix[16]: 投影矩阵
vColor[4]: RGBA颜色值
GLShaderManager::UserStockShader(GLT_SHADER_POINT_LIGHT_DIFF, GLFloat mvMatrix[16], GLFloat pMatrix[16], GLFloat vLightPos[3], GLFloat vColor[4])
vLightPos[3]: 点光源位置
GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_REPLACE, GLFloat mvMatrix[16], GLint nTextureUnit)
GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_MODULATE, GLFloat mvMatrix[16], GLFloat vColor[4], GLint nTextureUnit)
GLShaderManager::UserStockShader(GLT_SHADER_POINT_LIGHT_DIFF, GLFloat mvMatrix[16], GLFloat pMatrix[16], GLFloat vLightPos[3], GLFloat vBaseColor, GLint nTextureUnit)
vBaseColor: 颜色值(几何图形的基本色)

基础图元

图元 描述
GL_POINTS 单独点
GL_LINES 线段
GL_LINE_STRIP ⼀个从第⼀个顶点依次经过每一个后续顶点而绘制的线条
GL_LINE_LOOP 和GL_LINE_STRIP相同,但是最后一个顶点和第⼀个顶点连接起来了
GL_TRIANGLES 每3个顶点定义一个新的三角形
GL_TRIANGLE_STRIP 共用⼀个条带(strip)上的顶点的一组三⻆形
GL_TRIANGLE_FAN 以⼀个圆点为中⼼呈扇形排列,共⽤相邻顶点的⼀组三⻆形
基础图元.png
glPointSize(4.f) // 点的大小
glLineWidth(2.5f) // 线的宽度
//定义前向和背向的多变形:
glFrontFace(mode)
参数:GL_CW | GL_CCW
GL_CCW:表示传入的mode会选择逆时针为前向
GL_CW:表示顺时针为前向。
默认:GL_CCW。逆向时针为前向。
void GLBatch::Begin(GLenum primitive, GLunit nVerts, GLuint nTexttureUints = 0);
primitive: 图元
nVerts: 顶点数
nTexttureUints: 一组或2组纹理坐标

// 复制顶点数据    
void GLBatch::CopyVertexData3f(GLFloat *vVerts);

// 复制法线数据
void GLBatch::CopyNormalDataf(GLFloat *vNorms);

// 复制颜色数据
void GLBatch::CopyColorData4f(GLFloat *vColors);

// 复制纹理坐标数据
void GLBatch::CopyTexCoordData2f(GLFloat *vTextCoords, GLuint uiTextureLayer);

// 结束复制
void GLBatch::End(void);

// 绘制图形
void GLBatch::Draw(void);

上一篇 下一篇

猜你喜欢

热点阅读