1. OpenGL图形专有名词、坐标解析

一、名词解析:

1. Context(上下文):

调用OpenGL之前需要创建一个context上下文,context就是一个状态机,记录OpenGL中各种配置的状态。

  • 状态机:
    • 有记忆功能,能记住当前的状态;
    • 可以接收输入,根据输入的内容和当前状态,改变自己的状态,并产生输出;
    • 当进入特殊状态(停机状态),便不再接收输入,停止工作。
  • OpenGL状态机:
    • 可以记录当前的状态(比如使用的颜色、是否开启混合等);
    • 可以接收输入(如调用OpenGL的函数进行传参);
    • 可以进入停止状态,不再接收输入。

2. 渲染:

将图形、图像显示在屏幕上的过程就是渲染(Rendering)。

3. 顶点数组(VertexArray)、顶点缓冲区(VertexBuffer):

  • 图形图像的顶点位置数据的数组存储在内存中,这就是顶点数组;
  • 渲染过程中,在内存中获取顶点数据效率低,所以更高效的做法是存储在显存中,这就是顶点缓冲区。

4. 着色器(Shader):

着色器就是对GPU编程的代码段,类似于平时写的函数(对CPU编程的代码段)。

  • 分类:
    • 顶点着色器(VertexShader)
    • 片元着色器(FragmentShader)/像素着色器(PixelShader): 这两种名称只是在OpenGL和DirectX中的不同叫法而已。
    • 几何着色器(GeometryShader)
    • 曲面细分着色器(TessellationShader)
  • OpenGL在处理Shader时,和其他编译器一样。通过编译、链接等步骤生成着色器程序(glProgram),着色器程序同时包含顶点着色器和片元着色器的运算逻辑。OpenGL进行绘制时:
    • 首先由顶点着色器对传入的顶点数据进行运算;
    • 再通过图元装配,将顶点转换为图元;
    • 然后进行光栅化,将图元这种矢量图形,转换为栅格化数据;
    • 最后,将栅格化数据传入片元着色器进行运算,片元着色器对栅格化数据中的每一个像素进行运算,并决定像素的颜色。

5. 管线:

OpenGL渲染图形时,会经历一个一个的节点,而且每个节点的先后顺序是固定的,类似于流水线,所以称之为管线。

  • 固定管线、存储着色器:早期的OpenGL版本,内置了很多固定的shader程序,开发者只需传入相应的参数,就能快速实现图形渲染(也就是只能调用,无法自定义);
  • 由于OpenGL的使用场景非常丰富,固定管线或存储管线无法满足现有的场景,这时将相关部分开放成可编程。

6. 顶点着色器(VertexShader):

  • 一般用来处理图形每个顶点的变换(平移、旋转、投影等);
  • 顶点着色器是OpenGL中用于计算顶点属性,且是逐顶点运算的程序。每个顶点数据都会执行一次顶点着色器。顶点着色器是并行运算,执行过程中无法访问其他顶点数据;
  • 一般来说需要计算的顶点属性包括顶点坐标变换、逐顶点光照运算等。顶点坐标由自身坐标系转换为归一化坐标系的运算,就是在这里发生

7. 片元着色器(FragmentShader):

  • 一般用来处理图形中每个像素点的颜色计算和填充;
  • 片元着色器是OpenGL中用于计算片段(像素)颜色,且是逐像素运算的程序。也就是说每个像素都会执行一次片元着色器,当然也是并行执行的。

8. GLSL(OpenGL Shading Language):

OpenGL着色语言用来在OpenGL中着色编程的语言,是在图形卡的GPU(Graphic Processor Unit图形处理单元)上执行的,代替了固定的渲染管线的一部分,使渲染管线中不同层次具有可编程性。比如视图转换、投影转换等。
GLSL的着色器代码分成两个部分:顶点着色器(VertexShader)和片元着色器(FragmentShader)。

9. 光栅化(Rasterization):

  • 是把顶点数据转换为片元的过程,具有将图转换成一个个栅格组成的图像的作用,特点是每个元素对应帧缓冲区中的一个像素。
  • 光栅化是将几何图元变为二维图像的过程。该过程包含两部分操作:
    • 决定窗口坐标中哪些整型栅格区域被基本图元占用(也就是确定图形的像素范围);
    • 分配一个颜色值和一个深度值到各个区域(也就是把颜色附着上去)。
  • 把物体的数学描述以及与物体相关的颜色信息,转换为屏幕上用于对应位置上的像素及用于填充像素的颜色,这个过程成为光栅化。这是一个将模拟信号转化为离散信号的过程。

10. 纹理:

纹理可以理解为图片、位图。

11. 混合(Blending):

  • 在测试阶段之后,如果像素依然没有被剔除,那么像素的颜色将会和帧缓冲区的颜色进行混合,混合的算法可以通过OpenGL的函数进行指定。也可以通过片元着色器进行实现,性能会比原生的混合算法差一些。
  • 两个半透明的颜色叠加在一起,就是颜色的混合行为,就会触发离屏渲染

12. 变换矩阵(Transformation):

用于图形的平移、缩放、旋转等变换。

13. 投影矩阵(Projection):

用于将3D坐标转换为二维屏幕坐标,实际线条也将在二维坐标下进行绘制。

二、坐标解析

1. 2D笛卡尔坐标系

2. 3D笛卡尔坐标系

3. 观察者坐标系(Camera)

4. 世界坐标系

5. 惯性坐标系

6. 物体坐标系

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,527评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,314评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,535评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,006评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,961评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,220评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,664评论 3 392
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,351评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,481评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,397评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,443评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,123评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,713评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,801评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,010评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,494评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,075评论 2 341

推荐阅读更多精彩内容