opengl渲染管线(Graphics Pipeline)

opengl渲染管线

前言:在OpenGL中,任何事物都在3D空间中,但是屏幕和窗口都是2D像素数组,因此OpenGL大部分工作都是将3D坐标转化为适应屏幕的2D像素。3D坐标转化为2D坐标的过程是OpenGL的Graphics Pipeline(图形渲染管线)管理的,图形渲染管线是指一堆原始图形数据途径一个输送管道,期间经过各种变化处理最终出现在屏幕上的过程。一般包括连个部分,第一部分是把3D坐标转换位为2D坐标,第二部分是把2D坐标转化为实际有颜色的像素

图形渲染管线接受一组3D坐标,然后把它们转化为屏幕上有色的2D像素输出。管线可以被划分为好几个阶段,每个阶段将上一阶段的输出作为输入,所有这些阶段都是高度专门化的(它们都有一个特定的函数),很容易并行执行。因为很容易并行执行,所有现在显卡都有成千上万的小处理核心,它们在GPU上为每个阶段运行各自的小程序,从而在管线中快速处理数据,这些小程序叫着色器(shaser)

下面是管线的每个阶段的展示,蓝色部分代表的是我们可以注入自定义的着色器部分。
在这里插入图片描述
顶点着色器(Vertex Shader):首先介绍下顶点着色的输入是顶点数据,顶点数据(Vertex Data)是一系列顶点的集合,一个顶点(Vertex)是一个3D坐标数据的集合,通常用顶点数据表示,顶点属性一般包括3D位置和一些颜色,还有一些其他信息,暂且理解成有这两种。

顶点着色的过程就是输入一个单独的顶点,把3D坐标转换到另一种3D坐标(物体坐标,世界坐标,屏幕坐标,视口坐标),同时还对顶点属性进行一些基本处理。

图元装配(Primitive Assembly):图元装配的输入就是顶点着色输出的所有顶点,装配成指定图元的形状,GL_POINTS就是一个点,三角形的话就是GL_TRANGLES。

几何着色器(Geometry Shader):几何着色器的输入就是图元装配的输出,也就是一系列顶点,可以通过产生新顶点构造出新的(或是其他的)图元来生成其他形状。

光栅化(Rasterization Stage):将基本图元通过线性插值法生成像素,其实解释到这里我觉得比较容易理解,(生成供片段着色器使用的片段(Fragment)) 理解成片段反而不易理解,片段是OpenGL渲染一个像素所需的所有数据。另外就是在片段着色之前,在光栅化后会进行裁剪,裁剪会丢弃超出你视图以外的所有像素,用来提升效率。

片段着色器:对光栅化阶段输出的每个像素进行处理,常用来实现一些特效,主要作用计算一个像素的最终颜色,通常片段着色器包含3D场景的数据(光照,阴影,光的颜色等等)

在以上过程中,至少要定义顶点着色器和片段着色器,几何着色器是可选的,通常选择默认的着色器即可。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值