顶点
opengl物体图形都由点、线和多边形组成。而组成他们的关键就在于我们的顶点数据。就像画画在开始前会先画出大概的位置,opengl在绘制的时候也需要准备绘制的位置,而这些位置就是顶点,当顶点组合起来就是顶点坐标
坐标系
着色器
OpenGL编程语言是GLSL,就是我们说的着色器语言。语法上比较像c/c++。但是在这一基础上加上了许多适合图形处理的一些东西,比如一些针对向量和矩阵操作等。我们要图形渲染,就一定需要顶点着色器和一个简单的片元着色器
渲染过程
渲染管线
- 顶点着色器
顶点着色器主要进行顶点相关的一些操作。可以用于通过矩阵变换位置、计算照明公式来生成逐顶点颜色以及生成或者变换纹理坐标等基于顶点的传统操作。产生纹理坐标、颜色、点位置等信息送往后续阶段。
- 图元装配
顶点被组合成图元的过程叫做 图元装配。图元是指点、直线和三角形。
该过程还有两个重要操作:裁剪和淘汰。裁剪是指对于不在视锥体(屏幕上可见的3D区域)内的图元进行裁剪;淘汰是指根据图元面向前方或后方选择抛弃它们(如物体内部的点)。
- 光栅化
将图片转化为片段(fragment)的过程叫做 光栅化。在这里,虚拟3D世界中的物体投影到平面上,并生成一系列的片段。
而将每个图元顶点输出生成每个片段值的机制叫做 插值。
片段(fragment)可以简单的理解为带有深度等信息的像素点。屏幕上的一个像素点可能对应多个片段。
- 片段着色器
通常我们在这里对片段进行处理(纹理采样、颜色汇总等),将每个片段的颜色等属性计算出来并送给后续阶段。
最主要是确定渲染的颜色。就像画家调色板。
很多滤镜、美颜、图片处理。或者说抖音的一些特效,都可以用片元着色器编写。
最简单的片元着色器
- 逐片段操作