OpenGL第九版第一章-入门认识最简单的OpenGL程序

OpenGL渲染管线

OpenGL实现了渲染管线(rendering pipeline),实际上是一系列处理数据的过程,将应用程序的数据转换到最终渲染的图像。OpenGL首先接收用户提供的几何数据(顶点数据和图元数据,一般是顶点数据),将其输入到一系列的着色器中进行处理,这些着色器一共有6个阶段,一般刚需的有两个着色器:点着色器(vertex shader)和片元着色器(fragment shader)。其它四个分别是:细分着色器(其中就包含两个着色器)以及几何着色器。着色器处理中间还有图元装配的过程。经过数据处理后以后,数据将会被输入到光栅化单元(rasterizer),光栅化单元负责对所有裁剪区域内的图元生成片元数据,然后对所有的片元执行片元着色器。下面是OpenGL管线的流程框架:


一、OpenGL数据传输的预备工作

OpenGL需要将所有的数据都保存在缓存对象中(buffer object),由OpenGL维护的一块内存区域,而预备工作就是准备这些缓存区域以备存储输入的模型数据。可以用多种方式创建这样的数据缓存,最常用的是用函数
void glNamedBufferStorage (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);同时设置缓存的大小和内容。

二、数据从客户端(应用程序)传输到OpenGL(硬件厂商提供的OpenGL服务端)

缓存经过初始化(创建对象和分配内存),顶点数据就需要传输到OpenGL的缓存中进行存储。我们将一个顶点视为需要处理的数据包(应该是对每个顶点定义属性数据),通常始终都会包含position数据,其它的属性数据用来决定顶点最终呈现在屏幕上的颜色数据。

三、顶点着色-OpenGL渲染管线的第一步

对于绘制命令传输的每个顶点,OpenGL都会调用一个顶点着色器来对顶点进行数据处理,在顶点着色器阶段顶点会经过一系列的空间变换转换为齐次坐标。

四、细分着色器

顶点着色器处理了每个顶点关联数据之后,若果被激活了的话,细分着色器将会进一步处理数据,细分着色器会使用面片(patch)来描述物体,将会使用相对简单的面片几何体连接完成细分,结果将使得几何图元数量增加,模型会更加平滑。

五、几何着色

如果被激活的话,几何着色阶段允许光栅化之前对每个图元更进一步处理。

六、图元装配

这些顶点构成的几何图元的所有信息也会被传输到OpenGL,图元装配阶段将这些顶点与相关的几何图元之间组织起来,准备下一阶段的裁剪和光栅化工作。

七、裁剪

这一阶段是OpenGL自动完成的,不属于可编程环节,裁剪保证顶点落在视口之外的对应像素被剔除。

八、光栅化

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值