糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > 计算机图形管线(实时渲染管线)

计算机图形管线(实时渲染管线)

时间:2019-01-17 13:24:35

相关推荐

计算机图形管线(实时渲染管线)

在计算机图形学中,计算机图形管线(渲染管线 或简称 图形管线)是一个概念模型,它描述了图形系统将 3D场景渲染到2D屏幕所需执行的步骤 。

早期计算机图形管线是立即渲染模式(Immediate mode,也就是固定渲染管线),这个模式下绘制图形很方便。大多数功能都被库隐藏起来,开发者很少能控制如何进行计算的自由。开发者就像是一个无情的按开关机器,库提供固定的功能,你按需要打开,后来迫切希望拥有更多的灵活性。随着时间推移,规范越来越灵活,开发者对绘图细节有了更多的掌控,也就有了我们现在的可配置可编程的渲染管线。

上图来自于LearnOpenGL,大家可以自行查阅。

我们根据上图详细描述下计算机图形管线:

顶点着色器(可编程),将顶点数组的点逐个传入顶点着色器进行处理,比如说旋转、视图透视投影转换等,再输出顶点数据

图元装配(可配置),形成三角形,收集之前的顶点数据转换成一系列有序的简单图元,说明下这里的图元其实就是你写的drawArrays或是drawElements函数中你指定的第一个参数:线,点或三角形。

几何着色器(可编程)在OpenGL中是可选的,WebGL中没有。几何着色器以一个或多个表示为一个单独基本图形(primitive)的顶点作为输入,比如可以是一个点或者三角形。几何着色器在将这些顶点发送到下一个着色阶段之前,可以将这些顶点转变为它认为合适的内容,比如说三角形变成六边形。

转换反馈就是输出屏幕坐标点和Z值缓存等

光栅化(可配置),从连续图元创建离散片段。简单理解,就是三角形离散成各个像素点,因为三角形是要通过像素点绘制的。在这一阶段,虽然转不可编程的,但还可以配置裁剪图元、背面剔除等功能。

(说明下,在其他地方可能会说裁剪图元、背面剔除是在图元装配阶段,我也不确定哪个是对的,但按照learnOpenGL的说法,是在光栅化阶段,毕竟几何着色器在图元装配之后,如果在图元装配阶段图元都丢了,几何着色器还变啥形啊。不过,我们可以确实的是这些操作一定在片元着色器之前。)

裁剪图元,裁剪掉不在显示范围内的图元。背面剔除,在背面不显示的部分去除,三角形基元可以根据窗口空间中三角形的朝向进行剔除(即:不渲染而丢弃)。在WebGL和OpenGL中,顶点数据并不是按照逆时针环绕顺序定义的,都属于背面。

片元着色器(可编程),获取每个像素的颜色、深度值(如果有纹理,就取当前像素点对应的纹理信息)等,根据片元着色器的代码,把它转换成最终的颜色。

混合和测试(可配置)。

模板测试:启用后,如果测试提供的模板值与用户指定的模板值与模板缓冲区中基础样本的模板值不进行比较,则测试将失败。请注意,即使模板测试失败(甚至深度测试失败),仍可以修改帧缓冲区中的模板值。一般用来做物体描边或裁剪图形。深度测试:启用后,如果片段的深度没有按照用户指定与深度缓冲区中基础样本的深度值进行比较,则测试将失败。Alpha混合:是一种将图像与背景结合的过程,结合后可以产生部分透明或全透明的视觉效果。

本人知识尚浅,可能会存在错误,请大家多看多想,不要听信一家之言,如有错误,请指正,Thanks♪(・ω・)ノ

如果觉得《计算机图形管线(实时渲染管线)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。