当前位置: 移动技术网 > IT编程>开发语言>JavaScript > OpenGL入门详解(3.OpenGL基本流程)

OpenGL入门详解(3.OpenGL基本流程)

2020年07月28日  | 移动技术网IT编程  | 我要评论

前期文章:

看了不少的OpenGL书或者文章,有如下特征

  • 上来就是一堆代码,看的莫名其妙;
  • 上来就是很片面的介绍概念,看了也不知道如何使用
  • 越看越糊涂,不知道如何使用,为什么这样使用

本系列文章主要从入门的角度总结OpenGL的基本流程概念和所使用的语言,尽量避免学的糊涂。

OpenGL宏观流程

先列一下整体处理流程:

  1. 读取顶点
  2. 顶点着色器
  3. 组装图元
  4. 光栅化图元
  5. 片段着色器
  6. 写入帧缓冲
  7. 显示在屏幕上

再贴一张图
在这里插入图片描述
看到这可能会是一脸懵逼,完全不懂,当初我也是这样的,看了流程和图,脑海里大大的几个❓ what are you 说啥呢?下面自能尽量以我自己的语言合理的来解释了,可能解释的不充分。

读取顶点

  • 图片显示在屏幕上,需要2个因素,位置,颜色。
  • 显示的图形从几何角度上看是一个多面体(凹,凸)
  • 多面体有其顶点和边,边可通过顶点链接,因此有顺序的顶点可代表一个多面体。

因此以上决定了OpenGL处理流程的第一步,读取顶点,这些顶点定义了一个多面体的边界。在程序里,就是一个个坐标,用数组存储,对应着流程图片里面的顶点缓冲区/数组对象。

顶点着色器

确定了顶点,那么就需要把这些顶点的位置通过一种方式,告诉OpenGL,这里就使用到顶点着色器。

  • 顶点着色器生成每个坐标的最终位置,每个顶点执行一次
  • 它的输入需要顶点数据和着色器程序,着色器程序定义了一种方式把外部的顶点数据告知给OpenGL,并设置一些额外的属性如大小,颜色等
  • 精度要很高,因为位置对精确性要求很高
  • 输出就是OpenGL最终识别的最终位置

通过读入顶点和顶点着色器,OpenGL最终拿到了多面体的边界顶点。接下来就是组装图元和光栅化图元。

组装图元和光栅化图元

要把物体画到屏幕上,类似电视机上的显示画面,需要一个点一个点的显示,每一个点有其ARGB等组成的颜色。因此OpenGL定义了图元的概念:图元是三角形、直线或者点几何对象。因此OpenGL里面最基本的几何单元是点、直线、三角形。点和直线毋庸置疑,这里使用三角形是因为,三角形是最小的多面体,任何一个多面体都可以用多个三角形构成。圆也可以看作是由很多个三角形组成或者可以看作尺寸比较大的点。

读入顶点,并组装成一个个图元,接下来就是光栅化图元。
总所周知,移动设备的显示屏由成千上万个小的,独立的部件组成,被称之为像素;每个像素通常由三个单独的子组建构成,发出红色、绿色和蓝色的光,每个像素都非常小,人的眼睛会把红色、绿色和蓝色的光混合在一起,从而创造出巨量的颜色范围;

OpenGL通过光栅化技术把每个点、直线以及三角形分解成大量的小片段映射到显示屏上,从而形成一副图像。 类似于显示屏上的像素,每一个都是单一的纯色,用ARGB来构成,下图解释了这一过程。
在这里插入图片描述

片段着色器

在上图中,2个顶点生成一条直线,通过光栅化技术转化为一个片段集合。显示系统会把这些片段直接映射到屏幕上的像素,通常情况下一个片段就对应一个像素。

  • 片段着色器主要目就是告诉GPU每个片段的最终颜色应该是什么。
  • 基本图元的每个片段,片段着色器都会调用一次。
  • 输入为每个片段生成的顶点着色器输出
  • 输出就是每个片段的最终颜色。

确认了每个片段(对应到屏幕的像素)的颜色,最终就可绘制在显示屏幕上。

小结

本篇总结了宏观上的处理流程,深入理解这些流程很重要。

本文地址:https://blog.csdn.net/Scott_S/article/details/85794473

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网