OpenGL系:1-OpenGL术语

OpenGL 是⼀一种图形应⽤用程序编程接⼝口(Application Programming Interface, API).简单理理解就是开发的 图形库
OpenGL 本领高强,涉猎极广,使用略麻烦

  • 视频,图形,图⽚片处理理
  • 2D/3D 游戏引擎开发
  • 科学可视化
  • 医学软件开发
  • CAD(计算机辅助技术)
  • 虚拟实境(AR,VR)
  • AI ⼈人⼯工智能

那么一张图片显示出来,到底经过了什么一个过程?(这个过程就叫OPenGL的渲染管线:可以理解为流水线名称)

顶点数据 ------> 顶点着色器(vertex Shader) -----> 细分着色器 ----->

几何着色器 -----> 图元设置 -----> 剪切 ----->

光栅化 -----> 片元着色器 (Fragment Shader) -----> 显示效果

来看一下细节:

管线

  • OpenGL 渲染管线: 一系列有序的处理阶段的序列,⽤于把我们应用中的数据转化到OpenGL 生成 一个最终的图像的一个过程。
  • 管线 翻译白话:管线可以理解为流水线,按照固定的顺序进行一个一个执行不同的操作
  • 图元: 组成图像的基本单元.OpenGL中的基本图元包括 线三角形
-固定管线:
  • 主要针对的是着色器Shader,一个已经封装好的着色器,开发者使用时候,只要传入响应的参数,即可迅速完成渲染,类似系统中封装好的API,传入不同参数,实现不同渲染效果。
- 非固定管线/可编程管线/GLSL:
  • GLSL: (OpenGL Shading Language) 专⻔为图形开发设计的编程语⾔(一般来说就是编写各个着色器,语法类似C、C++)

- 顶点数据:

顶点数组(VertexArray)、顶点缓冲区(VerTex Buffer)。

两者区别主要在于存储方式不同:

  • 顶点数组(VertexArray)存储在内存中
  • 顶点缓冲区(VerTex Buffer) 存储在GPU提前分配的显存中

着⾊器分类:

-顶点着⾊器(必要):

  • 接收顶点数据,确定顶点位置
  • 单独处理理每个顶点(现在并行):处理图像顶点的变换(旋转、平移、缩放)
  • 3D图形数据 投影换算 2D图形数据
-细分着⾊器(可选) :
  • 全称: 细分控制着⾊器 /细分计算着⾊器。主要是:对所有的图像进行修改⼏何图元类型或者放弃所有的凸缘
-⼏何着⾊器 (可选):
  • 描述物体的形状,在管线中生成新的几何体处理(平顺)模型 ⽣成最终状态

-⽚元着⾊器 (必选):

  • 片元:理解为屏幕中的像素点。
  • 片元颜⾊以及深度值, 然后传递到⽚片元测试和混合 模块
    -> 片元着色器主要用于处理一个个点像素点,例如像素颜色的计算和填充
    -> 逐一像素且在GPU并行运行的程序,即每个像素都会执行一次。

- 目前OpenGL中可编程的仅有两个顶点:顶点着⾊器、⽚元着⾊器

-光栅化:

  • 输⼊入图元的数学描述,转化为 与屏幕对应的位置像素⽚片元, 简称(光栅化)
  • 顶点数据转换为片元
  • 几何图元转换为二维图像
  • 把物体的数学描述和相关颜色信息转换为屏幕上对应位置的像素和填充像素的颜色
  • 将模拟信号转换为离散信号
  • 这上一个不可编程的过程
作用:将图转化为一个个格栅组成的图像
特点:每个元素对应帧缓冲区中的一像素
执行的操作:
  • 确定图像的像素范围
  • 颜色附着:即分配一个颜色值和一个深度值到各个区域

-纹理

  • 可以理解为图片:一个增加了不同图像的图片,比如地球表面的纹理;
  • 添加纹理时候,渲染时候,可以使得场景更加逼真。

-混合(Blending)

  • 简单理解就是:两个图像/图形相交处的颜色,这个颜色即是两个图像/图形颜色的混合。

-变换矩阵(Transformation)

  • 图形平移、旋转、缩放时候使用变换矩阵

-投射矩阵(Projection)

  • 将3D坐标转换为2D屏幕坐标的时候使用

-渲染上屏/交换缓冲区(Swap Buffer)

  • 渲染缓冲区:可以理解为系统的资源。如:窗口
  • 渲染上屏:将图像直接渲染到窗口对应的渲染缓冲区
面试点:如果每个窗口只有一个缓冲区,在绘制过程中刷新了屏幕,窗口可能显示不出完成的图像
  • 常规OpenGL程序至少有两个缓冲区:

->屏幕缓冲区:用于显示在屏幕上。
->离屏缓冲区:没有显示在屏幕上。
触发离屏渲染:设置圆角 或设置图层蒙版、阴影 、光栅化

  • 在一个缓冲区渲染完成后,将屏幕缓冲区和离屏缓冲区进行交换,实现图像在屏幕上的显示
面试点:防止交换缓冲区时屏幕上下区域的图像分别属于两个不同的帧
  • 显示的刷新一般是逐行进行的,因此交换一般会等待显示器完成的信号,在显示器两次刷新的间隔中进行交换
    ->信号:垂直同步信号
    ->技术:垂直同步技术
面试点:使用了双缓冲区和垂直同步技术之后,由于总是要等缓冲区交换之后再进行下一帧的渲染,所以使得帧率无法完全达到硬件允许的最高水平

三区缓冲技术:

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