OpenGL渲染管线之概述 (一)

本文深入解析OpenGL渲染管线的各阶段,包括模型数据处理、顶点着色器、图元装配、几何着色器、光栅化、片段着色器及测试与混合。适合已掌握OpenGL基础的读者,旨在深化对图形渲染过程的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:本系列学习可能不适合对OpenGL没有任何了解的学习者。因为本系列只是作者基于自己的学习历程及加上自己对某些功能的设计思路思考得到,并且完成度不是很高。适合于对OpenGL已经有了一定了解,至少需要知道渲染管线主要有哪些流程以及图形渲染过程需要经过哪些变换。

概述:

opengl渲染管线是为了独立出渲染图形的每个过程,因为基于目前的渲染图形理论,渲染同一个场景中的大多数物体的计算过程是相同的,甚至不同场景里的大多数物体的计算过程也可以是相同的,那么就需要将这些相同的操作独立出来,避免重复造轮子。

流水线阶段:

  1. 模型数据:该阶段是定义绘制的图形的位置,大小,颜色。例如:我们需要在世界坐标系的原点处画一个平面三角形,那么我们至少需要定义这个三角形的三个顶点分别在什么位置(3D空间)。如果需要,我们还可以定义三个顶点分别是什么颜色。基于这些信息,我们就可以确定这个三角形在什么位置和大小。
  2. 顶点着色器:该阶段是转换模型数据里的3D坐标到裁剪坐标系。因为我们的模型数据的坐标都是局部坐标,可物体要真实地被渲染在屏幕上,还需要经过局部坐标系-世界坐标系-观察坐标系-投影坐标系-屏幕坐标系等过程,当然也可以直接从局部坐标系到屏幕坐标系,只是这样的话,这个空间里的所有物体都需要重复实现 世界坐标系-观察坐标系-投影坐标系-屏幕坐标系这个计算过程,而这个过程在这个空间里的大部分物体都是完全一样的。基于此,我们需要一个顶点着色器来应用不同物体之前的3D变化,最大程度地增加重用减小耦合。
  3. 图元装配:该阶段是将模型的定义具体化。因为上面两个阶段的物体只有最小定义,例如三角形由三个顶点即可确定。但是在屏幕上显示的却是完整的三角形。更加关键的是,我们的屏幕是离散的像素点,从三角形的三个顶点,到屏幕上离散的点的集合组成的三角形(只是我们从屏幕上看起来认为是三角形,因为三角形是连续图形的概念),我们不可避免地需要从三角形的三个顶点推断出三角形的连续图形,再将连续图形离散化,显示在屏幕上。而图元装配阶段就是从三个顶点推断出三角形连续图形的定义的过程。
  4. 几何着色器:该阶段是在上一阶段的基础上,修改上一阶段的图元,用以实现特定功能。
  5. 光栅化:该阶段将图元映射为最终屏幕上响应的像素,也即离散化过程。
  6. 片段着色器:该阶段计算每一个像素的最终颜色。所有OpenGL高其效果产生于此。通过使用3D场景的光照、阴影、光的颜色等数据来计算最终像素颜色。
  7. 测试与混合:该阶段使用各种测试和Blend;测试用来判断像素是否应该被抛弃,混合用于混合多个像素的颜色。

大牛们对流水线的总结理解:

OpenGL渲染管线---概述(一) 详细讲述了OpenGL中各个组成模块在流水线中发挥的作用,及对比固定管线与可编程管线,加固理解。

可编程管线,图片引用自上文。下图中省略了图元装配

可编程管线
可编程管线

详细可编程管线图示,引用上文:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值