iOS OpenGL开发(二) - 着色器渲染流程

栏目: IOS · 发布时间: 5年前

内容简介:第一篇我们提到了很多的着色器相关的名词,那么什么是讲到着色器,我们首先提到的应该会图元:组成图像的基本单元。

第一篇我们提到了很多的着色器相关的名词,那么什么是 着色器 呢?着色器他们又有一个什么样的流程呢?着色器分哪些种类呢?不同的着色器分别有什么功能呢?我们就带着这些问题,开启我们这一片文章的内容。

1、着色器的基本认识

讲到着色器,我们首先提到的应该会 图元 ,那么什么是图元呢?

图元:组成图像的基本单元。

那么说完图元,我们就要说说 渲染管线 了,怎么理解渲染管线呢?

OpenGL渲染管线:一系列有序处理阶段的序列,用于把我们应用中的数据转化到OpenGL生成一个最终的图像的一个过程。

怎么理解?其实我们可以把管线想象称为一个流水线,流水线上面的每个过程都是固定好了的,顺序不能错乱的,那么我们把流水线上面的一个工人或者是机器设备就可以理解为一个 着色器 。那么我们怎么去指挥流水线工人或者是流水线上的机器干活呢?我们就需要有一种交流沟通的命令,这个命令我们就可以理解为是专门为图形开发设计的编程语言,也就是我们常说的 GLSL

2、着色器的分类

  • 顶点着色器(必要):是最初用来处理顶点坐标的,一般会对坐标做一些计算
  • 细分着色器(可选):描述物体的形状,在管线中生成新的几何体处理(平顺)模型生成最终形态
  • 几何着色器(可选):是对原坐标进行一些修改,个人感觉适用于一些特效
  • 片元着色器(必要):是对图形进行涂色,并最终输出 其中顶点着色器和片元着色器是我们必须要要使用的,然而细分着色器和几何着色器我们是可选的,一般用的很少。

3、着色器的渲染流程

第一节里面提到了渲染管线,其实我们可以理解就是着色器的渲染流程。下面一幅图就是着色器的渲染流程

iOS OpenGL开发(二) - 着色器渲染流程

流程:

  • 拿到顶点数据传给顶点着色器,顶点着色器根据你的投影等等不同的情况进行处理一番
  • 顶点着色器处理完了之后交给细分着色器,生成新的几何体处理(平顺)模型生成最终形态,对所有的图像进行修改几何图元类型或者放弃所有的凸缘
  • 然后交给几何着色器对原坐标进行一些修改(一般用于特效方面的)
  • 接着进行图元设置,其实可以理解为描述图片到底长啥样
  • 接下来进行剪切,剪切顾名思义就是剪切视口之外的绘制
  • 下面就是光栅化,光栅化就是输入图元的数学描述,转化为与屏幕对应的位置像素片元。其实很好理解,就是把这个图片切成一个个的像素点然后交给片元着色器
  • 片元着色器就会处理每一个像素点,给每一个像素点进行着色,其实就是片元颜色以及深度值传递到片元测试和混合模块。所以说有多少个像素点就要执行多少次片元着色器。

以上所述就是小编给大家介绍的《iOS OpenGL开发(二) - 着色器渲染流程》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Introduction to Programming in Java

Introduction to Programming in Java

Robert Sedgewick、Kevin Wayne / Addison-Wesley / 2007-7-27 / USD 89.00

By emphasizing the application of computer programming not only in success stories in the software industry but also in familiar scenarios in physical and biological science, engineering, and appli......一起来看看 《Introduction to Programming in Java》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试