如何理解 OpenGL 中着色器、渲染管线、光栅化等概念?

没有图形学基础直接看看 OpenGL 编程指南,不太理解这几个概念
关注者
847
被浏览
242,190
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

卧槽,前些日子看这几个概念就十分想吐槽,这么难理解的概念窃以为纯属翻译的不够接地气。

————

首先,光栅化(Rasterize/rasteriztion)。

这个词儿Adobe官方翻译成栅格化或者像素化。没错,就是把矢量图形转化成像素点儿的过程。我们屏幕上显示的画面都是由像素组成,而三维物体都是点线面构成的。要让点线面,变成能在屏幕上显示的像素,就需要Rasterize这个过程。就是从矢量的点线面的描述,变成像素的描述。

如下图,这是一个放大了1200%的屏幕,前面是告诉计算机我有一个圆形,后面就是计算机把圆形转换成可以显示的像素点。这个过程就是Rasterize。

————

渲染管线(Pipeline)

这个翻译尤其不接地气,简直就是直译(pipe管子line线路)。Pipeline是输送管道的意思。其实是指三维渲染的过程中显卡执行的、从几何体到最终渲染图像的、数据传输处理计算的过程。

————

着色器(Shader)

这个翻译的挺好。画画的时候我们经常有这么一个过程:先打线稿,再上色。着色器就是用来做这个工作的。

通常着色器分两种:

1顶点着色器(vertex shader)这个是告诉电脑如何打线稿的——如何处理顶点、法线等的数据的小程序。

2片面着色器(fragment shader)这个是告诉电脑如何上色的——如何处理光、阴影、遮挡、环境等等对物体表面的影响,最终生成一副图像的小程序。

采用了这两种着色器小程序 数据传输处理计算的渲染过程,称之为 可编程管线。

————

以上,希望能让楼主理解这些拗口的概念。