美文网首页
OpenGL的渲染架构

OpenGL的渲染架构

作者: 古方月 | 来源:发表于2020-07-22 15:09 被阅读0次
OpenGL的渲染架构
OpenGL渲染架构.png
数据传递的三种方式
  • Attributes :顶点数据(x,y,z,w) / 投影矩阵,模型矩阵/ 纹理坐标等
    只能传入顶点着色器,通过顶点着色器间接传入片元着色器
  • Uniforms :统一批次(变换矩阵,通道,颜色),一次性传,不经常修改
    可以直接传入顶点着色器和片元着色器
  • Texture Data :纹理数据
    可以直接传入顶点着色器和片元着色器
存储着色器
  • 存储着色器初始化
GLShaderManager shaderManage;
shaderManager.InitializeStockShaders();
  • 单元着色器
    使用场景:绘制默认OpenGL 坐标系(-1,1)下图形,图形所有片段都会以一种颜⾊填充
参数1:存储着色器种类 - 单元着色器
参数2:颜色
GLShaderManager::UserStockShader(GLT_SHADER_IDENTITY, GLfloat vColor[4]);
  • 平面着色器
    使用场景:在绘制图形时,可以应用变换(模型/投影变化)
参数1:存储着色器种类 - 平面着色器
参数2:允许变化的4*4矩阵
参数3:颜色
GLShaderManager::UseStockShader(GLT_SHADER_FLAT, GLfloat mvp[16], GLfloat vColor[4]);
  • 上色着色器
    使用场景:在绘制图形时,可以应用变换(模型/投影变化) ,颜色将会平滑的插入到顶点之间称为平滑着色。
参数1 : 存储着⾊器种类-默认光源着⾊器
参数2 : 模型4*4矩阵
参数3 : 投影4*4矩阵
参数4 : 颜⾊值
GLShaderManager::UserStockShader(GLT_SHADER_SHADED, GLfloat mvp[16]);
  • 默认光源着色器
    使用场景:在绘制图形时, 可以应用变换(模型/投影变化),这种着色器会使绘制的图形产生阴影和光照的效果.
参数1: 存储着⾊器种类-默认光源着色器 
参数2: 模型4*4矩阵
参数3: 投影4*4矩阵
参数4: 颜⾊色值
GLShaderManager::UserStockShader(GLT_SHADER_DEFAULT_LIGHT, GLfloat mvMatrix[16], GLfloat pMatrix[16], GLfloat vColor[4]);
  • 点光源着色器
    使用场景:绘制图形时,可以应用变换(模型/投影变化),这种着色器会使绘制的图形产生阴影和光照的效果,他与默认光源着色器非常类似,区别只是光源的位置可能是固定的。
参数1 : 存储着⾊器种类-点光源着⾊器
参数2 : 模型4*4矩阵
参数3 : 投影4*4矩阵
参数4 : 点光源的位置
参数5 : 颜⾊值
GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_REPLACE, GLfloat mvMatrix[16], GLint nTextureUnit);
  • 纹理替换矩阵着色器
    使用场景:绘制图形时,可以应用变换(模型/投影变化),这种着色器通过给定的模型视图投影矩阵,使用纹理单元来进行颜色填充。其中每个像素点的颜色是从纹理中获取。
参数1 : 存储着⾊器种类-纹理替换矩阵着⾊器
参数2 : 模型4*4矩阵
参数3 : 纹理单元
GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_REPLACE, GLfloat mvMatrix[16], GLint nTextureUnit);
  • 纹理调整着色器
    使用场景 : 绘制图形时,可以应用变换(模型/投影变化)这种着色器通过给定的模型视图投影矩阵。着色器将一个基本色乘以一个取自纹理单元nTextureUnit的纹理。将颜色与纹理进行混合后才填充到片段中。
参数1 : 存储着⾊器种类-纹理调整着⾊器
参数2 : 模型4*4矩阵
参数3 : 颜⾊值
参数4 : 纹理单元
GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_MODULATE, GLfloat mvMatrix[16], GLfloat vColor[4], GLint nTextureUnit);
  • 纹理光源着色器
    使用场景 : 绘制图形时,可以应用变换(模型/投影变化)。这种着色器通过给定的模型视图投影矩阵。着色器讲一个纹理通过漫反射照明计算进行调整(相乘)。
参数1 : 存储着⾊器种类-纹理光源着⾊器
参数2 : 模型4*4矩阵
参数3 : 投影4*4矩阵
参数4 : 点光源位置
参数5 : 颜⾊值
参数6 : 纹理单元
GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_POINT_LIGHT_DIEF, GLfloat mvMatrix[16], GLfloat pMatrix[16], GLfloat vLightPos[3], GLfloat vBaseColor[4], GLint nTextureUnit);
OpenGL基本图元
图元
OpenGL三角形带

对于很多表面或者形状⽽言,我们会需要绘制⼏个相连的三角形。我们可以使用GL_TRIANGLES_STRIP图元绘制⼀串相连三角形,从而节省⼤量的时间。
优点

  • 用前3个顶点指定第1个三角形之后,接下来的每⼀个三⻆形,只需要再指定1个顶点。需要绘制⼤量的三⻆形时,采⽤这种⽅法可以节省⼤大量的程序代码和数据存储空间。
  • 提供运算性能和节省带宽。更少的顶点意味着数据从内存传输到图形卡的速度更快,并且顶点着⾊器需要处理的次数也更少。

相关文章

  • 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着色器的渲染流程

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

  • OpenGL渲染架构与传值方式

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

  • OpenGL渲染流程和矩阵堆栈

      想要更深入的学习OpenGL,就要先了解OpenGL渲染架构图(如下图)。客户端和OpenGL渲染服务严格遵循...

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

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

网友评论

      本文标题:OpenGL的渲染架构

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