美文网首页
OpenGL渲染流程解析

OpenGL渲染流程解析

作者: 君幸食j | 来源:发表于2020-08-12 20:24 被阅读0次
OpenGL基础渲染管线流程.png

我们从上图入手,来分析一下OpenGL的渲染流程。

客户机、服务器

  • 管线分成了两部分。上半部分是客户机端,下半部分是服务器端。这种基本的客户机-服务器设计是在管线的客户机端在功能上从服务器端分离出来时开始采用的。
  • 客户机是存储在CPU存储器中,并且在应用程序中执行,或者在主系统内存中的驱动程序中执行。驱动程序将渲染命令与数据组合起来,并发送到服务器执行。在一台典型的桌面计算机上,服务器会跨越一些系统总线,实际上,它就是图形加速卡上的硬件和内存。
  • 服务器和客户机在功能上是异步的,客户机不断地将数据块和命令块组合在一起并送入缓冲区,然后这些缓冲区会发送到服务器执行。如果服务器停止工作等待客户机,或者客户机停止工作来等待服务器做好接受更多命令和数据的准备,这种情况被称为管线停滞。这不是理想的情况,为了获得最佳性能,我们希望两方面都尽可能不停的工作。

着色器

  • 着色器是使用GLSL编写的程序,这些着色器必须从源代码中编译和链接到一起才能使用。最终准备就绪的着色器程序在第一阶段构成顶点着色器,在第二阶段构成片元着色器。实际上还有一种几何着色器选择性地安排在两者之间,还有一些传递片段的处理特性,诸如混合、模板和深度测试等。
  • 顶点着色器处理从客户机输入的数据,包括应用变换、计算光照效果、位移、颜色值等等。每个顶点都会执行一次。
  • 图元组合意味着顶点已经组合在一起,并逐个片段地进行了光栅化,再交由片元着色器逐个进行填充,最终把效果渲染在屏幕上。

当然我们首先要为这些着色器提供数据,否则什么也没有效果。有3种向着色器传递渲染数据的方法,即属性、uniform值和纹理。

属性

  • 属性就是一个对每个顶点都要做改变的数据元素。实际上,顶点位置本身就是一个属性。属性值可以是浮点数、整数或布尔数据。
  • 属性以四维向量(x,y,z,w)的形式进行内部存储,忽略第3个分量自动设为0,忽略第4个分量自动设为1。
  • 属性也包括纹理坐标、颜色值、光照计算的表面法线等。
  • 属性会从本地客户机内存中复制存储在图形硬件中的一个缓冲区上。这些属性只提供给顶点着色器使用,对于片元着色器没什么意义。
  • 这些属性对每个顶点都要做改变,但并不意味着它们的值不能重复。通常情况下,它们都是不一同的,但有可能整个数组都是同一值的情况。

Uniform值

  • Uniform值是一种对整个批次的属性都取统一值的单个值,它是不变的,通常设置完Uniform值就紧接着发出一个图元批次的命令。Uniform值可以无次数限制使用,可用于整个表面的单个颜色值,也可以设置一个时间值,在每次渲染某种类型的顶点动画时修改它。常用于顶点渲染中设置变换矩阵。
  • Uniform值可以是浮点值、整数或布尔值,顶点着色器和片元着色器都可以有Uniform值。
  • Uniform值可以是标量类型、矢量类型和矩阵类型。

纹理

  • 在顶点着色器、片元着色器中都可以对纹理数据进行采样和筛选。
  • 纹理数据,不仅仅是表现图形。很多图形文件格式都是以无符号字节(每个颜色通道8位)形式对颜色分量进行存储的,但仍然可以设置浮点纹理。

输出

  • 上图中第四种数据类型是输出(out)。输出数据是作为一个阶段着色器的输出定义的,而在后续阶段的着色器则作为输入定义。
  • 输出类型的数据可以简单的从一个阶段传递到下一个阶段,也可以用不同的方式插入。
  • 客户端的代码接触不到这些内部变量所以我们的OpenGL开发用不到。

相关文章

  • OpenGL/OpenGL ES 渲染流程以及固定存储着色器

    本篇目标 OpenGL 渲染流程图解析 OpenGL 固定存储着⾊器理解 OpenGL渲染流程 正如上图所表示的,...

  • 第三弹 OPenGL 渲染流程图解析

    OpenGL 渲染流程图解析 OpenGL渲染架构图 如果,我们想要渲染一个三角形,具体的操作流程是什么呢?如下图...

  • OpenGL渲染流程解析

    OpenGL的作用就是图形渲染,所以了解它的渲染架构必不可少!我们根据下面这张图分析一下它的具体渲染流程,这个非常...

  • OpenGL 渲染流程解析

    OpenGL 渲染架构 Attributes 属性只能传入顶点着色器,不能直接传递到片元着色器,只能通过GLSL代...

  • OpenGL渲染流程解析

    我们从上图入手,来分析一下OpenGL的渲染流程。 客户机、服务器 管线分成了两部分。上半部分是客户机端,下半部分...

  • OSG3.4内置Examples解析【目录】

    opengl渲染管线 从整体上解读OpenGL的渲染流程 一 从整体上解读OpenGL的渲染流程 二 osg与an...

  • OpenGL(三)-OpenGL渲染流程解析

    OpenGL的渲染管线有哪些阶段,Shader(着色语言)到底发生在哪个阶段,这是OpenGL初学者需要搞清楚的。...

  • OpenGL渲染流程详解(转)

    【OpenGL】OpenGL渲染流程详解 查阅过很多资料,在OpenGL的整个渲染流程中很多资料上描述的过程大致相...

  • OpenGL 渲染架构

    着色器渲染流程 openGL官方渲染管线流程地址[https://www.khronos.org/opengl/w...

  • OpenGL渲染流程

    OpenGL渲染流程 渲染框架 之前学习管线的时候,我们知道OpenGL的渲染流程是有固定次序的。那么先了解下渲染...

网友评论

      本文标题:OpenGL渲染流程解析

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