渲染
将图形/图像数据转换成2D空间图像操作叫做渲染(Rendering)
图⽚/按钮/视频-->显示绘制到屏幕过程,解码图⽚-->渲染
顶点数组( VertexArray ) 和 顶点缓冲区( VertexBuffer )
顶点
指的是我们在绘制一个图形时它的顶点位置数据.⽽这个数据可以直接存储在数组中或者将其缓存到GPU显存中.
开发者可以选择设定函数指针,在调用绘制⽅法的时候,直接由内存传入顶点数据,也就是说这部分数据之前是存储在内存当中的,被称为顶点数组
。
⽽性能更高的做法是提前分配一块显存,将顶点数据预先传入到显存当中。这部分的显存就被称为顶点缓冲区
着⾊器程序Shader
全⾯的将固定渲染管线架构变为了可编程渲染管线。因此,OpenGL在实际调用绘制函数之前,还需要指定一个由shader编译成的着色器程序。
常见的着色器主要有顶点着⾊器(VertexShader),⽚段着⾊器 (FragmentShader)/像素着⾊器(PixelShader),⼏何着⾊器 (GeometryShader),曲⾯细分着⾊器(TessellationShader)
。
着色器的分类
1.顶点着色器(必要):是最初用来处理顶点坐标的,一般会对坐标做一些计算
2.细分着色器(可选):描述物体的形状,在管线中生成新的几何体处理(平顺)模型生成最终形态
3.几何着色器(可选):是对原坐标进行一些修改,感觉适用于一些特效
4.片元着色器(必要):是对图形进行涂色,并最终输出
其中顶点着色器
和片元着色器
是我们必须要使用的,然而细分着色器和几何着色器我们是可选的,一般用的很少。
顶点着⾊器 VertexShader
-
- 顶点着⾊器是OpenGL中⽤于计算顶点属性的程序。顶点着⾊器是逐顶点运算的程序,也就是说每个顶点数据都会执行一次顶点着⾊器,当然这是并行的,并且顶点着⾊器运算过程中⽆法访问其他顶点的数据
片元着⾊器程序 FragmentShader
•
• ⽚段着⾊器是OpenGL中⽤于计算片段(像素)颜色的程序。⽚段着⾊器是逐像素运算的程序,也就是说每个像素都会执行一次⽚段着⾊器,当然也是并行的
光栅化Rasterization
• ,具有将图转化为⼀个个栅格组成的图象的作用,特点是每个元素对应帧缓冲区中的⼀像素。
• 光栅化其实是。该过程包含了两部分的工作。
第⼀部分⼯工作:决定窗口坐标中的哪些整型栅格区域被基本图元占用;
第二部分工作:分配⼀个颜⾊值和一个深度值到各个区域。
• 光栅化过程产⽣的是片元
OpenGL在处理理shader时,和其他编译器一样。通过编译、链接等步骤,⽣成了着⾊器程序(glProgram),着⾊器程序同时包含了顶点着⾊器和⽚段着⾊器的运算逻辑。在OpenGL进行绘制的时候,⾸先由顶点着⾊器对传入的顶点数据进行运算。再通过图元装配,将顶点转换为图元。然后进⾏光栅化,将图元这种⽮量图形,转换为栅格化数据。最后,将栅格化数据传入片段着⾊器中进行运算。⽚段着⾊器会对栅格化数据中的每⼀个像素进行运算,并决定像素的颜⾊
着色器渲染过程图.png
1.创建顶点
2.然后通过顶点着色器渲染
3.连接信息条,通过各个顶点连接成几何图形
4.光栅化:其实是确定像素点在屏幕上绘制的位置,然后这些片段由片元着色器处理(输入给片元着色器)
5.光栅化阶段生成每个片元执行这个着色器
6.最终呈现出图形
网友评论