美文网首页
二.OpenGL 渲染架构

二.OpenGL 渲染架构

作者: 凯歌948 | 来源:发表于2020-07-02 20:36 被阅读0次

1.OpenGL 渲染架构图

OpenGL渲染架构图.png

渲染流程:
1.设置顶点数据和其他参数。
2.在顶点着色器中进行运算得到裁剪坐标。
3.细分着色器、几何着色器,不可自定义,跳过。
4.图元设置,根据设置构成点、线、三角形。
5.裁剪,裁剪掉超出显示区域的部分。
6.光栅化, 将图源栅格化为一个个的像素点。
7.片元着色器,将对应的栅格(像素)填充为具体的颜色。
8.渲染图像。

2.OpenGL 基本图元

OpenGL基本图元.png
图元描述:
GL_POINTS 点 (每个顶点在屏幕上都是单独点)
GL_LINES 线 (每⼀对顶点定义⼀个线段)
GL_LINE_STRIP 条带线 (一个从第⼀个顶点依次经过每⼀个后续顶点而绘制的线条)
GL_LINE_LOOP 循环线 (和GL_LINE_STRIP相同,但是最后⼀个顶点和第⼀个顶点连接起来了)
GL_TRIANGLES 独立三角形 (每3个顶点定义⼀个新的三角形)
GL_TRIANGLE_STRIP 三角形条带 (共⽤一个条带(strip)上的顶点的一组三⻆形)
GL_TRIANGLE_FAN 三角形扇面 (以⼀个圆点为中⼼呈扇形排列,共⽤相邻顶点的⼀组三⻆形)

3.OpenGL 三⻆形环绕⽅式

 在默认情况下,OpenGL认为具有逆时针⽅向环绕的多边形为正⾯.
 glFrontFace(GL_CW);
 GL_CW:告诉OpenGL 顺时针环绕的多边形为正⾯;
 GL_CCW:告诉OpenGL 逆时针环绕的多边形为正⾯;

4.OpenGL 投影方式

 正投影
 CLFrustum::SetOrthographic(GLfloat xMin, GLfloat xMax, GLfloat yMin, GLfloat yMax, GLfloat zMin, GLfloat zMax)
 参数:
 xMin/xMax:x轴
 yMin/yMax:y轴
 zMin/zMax:z轴
 
 透视投影
 CLFrustum::SetPerspective(float fFov , float fAspect ,float fNear ,float fFar);
 参数:
 fFov:垂直方向上的视场角度
 fAspect:窗口的宽度与⾼度的纵横⽐
 fNear:近裁剪面距离
 fFar:远裁剪面距离
 纵横⽐ = 宽(w)/高(h)

5.OpenGL 固定存储着⾊器

 单元(Identity)着色器 GLT_SHADER_IDENTITY
 GLShaderManager::UserStockShader(GLT_SHADER_IDENTITY,GLfloat vColor[4]);
 参数1: 存储着⾊器种类-单元着⾊器
 参数2:颜色
 使⽤场景: 绘制默认OpenGL坐标系(-1,1)下图形. 图形所有片段都会以一种颜色填充
 
 平面(Flat)着色器 GLT_SHADER_FLAT
 GLShaderManager::UseStockShader(GLT_SHADER_FLAT, GLfoat mvp[16], GLfloat vColor[4]);
 参数1: 存储着⾊器种类-平⾯着⾊器
 参数2: 允许变化的4*4矩阵
 参数3: 颜⾊
 使用场景: 在绘制图形时, 可以应⽤变换(模型/投影变化).
 
 上色(Shaded)着色器 GLT_SHADER_SHADED
 参数1: 存储着⾊器种类-上⾊着⾊器
 参数2: 允许变化的4*4矩阵
 使用场景: 在绘制图形时, 可以应⽤变换(模型/投影变化) 颜⾊将会平滑地插入到顶点之间称为平滑着⾊.
 
 默认光源着色器 GLT_SHADER_DEFAULT_LIGHT
 GLShaderManager::UseStockShader(GLT_SHADER_DEFAULT_LIGHT, GLfoat mvMatrix[16], GLfloat pMatrix[16], GLfloat vColor[4]);
 参数1:默认光源着色器
 参数2:模型视图矩阵
 参数3:投影矩阵
 参数4:颜色
 使⽤场景: 在绘制图形时, 可以应用变换(模型/投影变化) 这种着⾊器会使绘制的图形产生阴影和光照的效果.
 
 点光源着色器 GLT_SHADER_POINT_LIGHT_DIFF
 GLShaderManager::UseStockShader(GLT_SHADER_POINT_LIGHT_DIFF, GLfoat mvMatrix[16], GLfloat pMatrix[16], GLfloat vLightPos[3], GLfloat vColor[4]);
 参数1:点光源着色器
 参数2:模型视图矩阵
 参数3:投影矩阵
 参数4:视点坐标系中的光源位置
 参数5:颜色
 使用场景: 在绘制图形时, 可以应用变换(模型/投影变化) 这种着⾊器会使绘制的图形产⽣阴影和光照的效果.它与默认光源着⾊器⾮常类似,区别只是光源位置可能是特定的
 
 纹理替换矩阵着色器 GLT_SHADER_TEXTURE_REPLACE
 GLShaderManager::UseStockShader(GLT_SHADER_TEXTURE_REPLACE, GLfoat mvMatrix[16], GLint nTextureUnit);
 参数1: 纹理替换矩阵着⾊器
 参数2: 模型4*4矩阵
 参数3: 纹理单元
 使用场景: 在绘制图形时,可以应用变换(模型/投影变化)这种着⾊器通过给定的模型视图投影矩阵.使⽤纹理单元来进⾏颜⾊填充.其中每个像素点的颜⾊是从纹理中获取.
 
 纹理调整着色器 GLT_SHADER_TEXTURE_MODULATE
 GLShaderManager::UseStockShader(GLT_SHADER_TEXTURE_MODULATE, GLfoat mvMatrix[16], GLfloat vColor, GLint nTextureUnit);
 参数1: 纹理调整着⾊器
 参数2: 模型4*4矩阵
 参数3: 颜⾊
 参数4: 纹理单元
 使⽤场景: 在绘制图形时, 可以应⽤变换(模型/投影变化)这种着⾊器通过给定的模型视图投影矩阵. 着⾊器将⼀个基本色乘以⼀个取自纹理单元nTextureUnit的纹 理.将颜色与纹理进⾏颜⾊混合后才填充到⽚段中.
 
 纹理光源着色器 GLT_SHADER_TEXTURE_POINT_LIGHT_DIFF
 GLShaderManager::UseStockShader(GLT_SHADER_TEXTURE_POINT_LIGHT_DIFF, GLfloat mvMatrix, GLfoat mvMatrix[16], GLfloat vLightPos[3], GLfloat vBaseColor[4], GLint nTextureUnit);
 参数1:纹理光源着色器
 参数2:模型视图矩阵
 参数3:投影矩阵
 参数4:视点坐标系中的光源位置
 参数5:几何图形的基本色
 参数6:将要使用的纹理单元
 使⽤场景: 在绘制图形时, 可以应用变换(模型/投影变化)这种着⾊器通过给定的模型视图投影矩阵. 着⾊器将⼀个纹理通过漫反射照明计算进⾏调整(相乘).

6.GLBatch

 //GLBatch类可以作为7种图元的简单批次容器使用。而且它知道在使用GL_ShaderManager支持的任意存储着色器时如何对图元进行渲染。
 void GLBatch::Begain(GLeunm primitive,GLuint nVerts,GLuint nTexttureUnints = 0);
 参数1:图元
 参数2:顶点数
 参数3:一组或者2组纹理坐标(可选)
 //复制表面法线
 void GLBatch::CopyNormalDataf(GLfloat *vNorms);
 //复制颜色
 void GLBatch::CopyColorData4f(GLfloat *vColors);
 //复制纹理坐标
 void GLBatch::CopyTexCoordData2f(GLFloat *vTextCoords,GLuint uiTextureLayer);
 //结束绘制
 void GLBatch::End(void);

相关文章

  • OpenGL渲染架构

    OpenGL的渲染架构图 OpenGL渲染主架构 OpenGL渲染架构分为客户端(Client)和服务端(Serv...

  • OpenGL/OpenGL ES(二) 渲染架构

    1. 渲染架构图 上图是 OpenGL 渲染的大致架构,从图中我们可以看出,OpenGL 渲染架构分为Client...

  • OpenGL渲染架构以及三种数据传递方式

    一、OpenGL渲染架构 了解OpenGL渲染架构对我们学习OpenGL有非常重要的作用。话不多说,直接上图: 图...

  • 3. OpenGL渲染基础

    一、OpenGL渲染架构图 1. OpenGL渲染架构图: 2. 数据传递: 从上图可以看出OpenGL的数据传递...

  • OpenGL渲染架构

    OpenGL渲染架构 OpenGL的渲染架构image.png 渲染流程:设置顶点数据和其他参数。在顶点着色器中进...

  • 3、OpenGL渲染架构

    OpenGL渲染架构 渲染架构图 主要分为两大模块 Client:是指常见的ios代码和OpenGL API方法。...

  • 二.OpenGL 渲染架构

    1.OpenGL 渲染架构图 渲染流程:1.设置顶点数据和其他参数。2.在顶点着色器中进行运算得到裁剪坐标。3.细...

  • openGL着色器的渲染流程

    openGL渲染架构 上图为openGL渲染架构图 Attributes属性 属性就是对每一个顶点都要做改变的数据...

  • OpenGL笔记二:OpenGL 渲染流程及投影

    前言 期待您移步上篇:OpenGL笔记一:专业名词 OpenGL渲染架构 OpenGL 渲染流程分为两个部分:Cl...

  • OpenGL渲染架构与传值方式

    OpenGL渲染架构 了解OpenGL渲染架构 client和server并不是我们平时开发时常说的客户端和服务器...

网友评论

      本文标题:二.OpenGL 渲染架构

      本文链接:https://www.haomeiwen.com/subject/tezrqktx.html