图形api框架以及OpenGL常见名词解析


图形api简介

1.OpenGL (Open Graphics Library)

是⼀一个跨编程语⾔言、跨平台的编程图形程序接⼝口,它将计算机的资源抽象称为⼀一个个OpenGL的对象,对这些资源的操作抽象为⼀一个个的OpenGL指

2.OpenGL ES (OpenGL for Embedded Systems)

是 OpenGL 三维图形 API 的⼦子集,针对⼿手机、PDA和游戏主机等嵌⼊入式设备⽽而设计,去除了了许多不不必要和性能较低的API接⼝口。

3.DirectX

是由很多API组成的,DirectX并不不是⼀一个单纯的图形API. 最重要的是DirectX是属于Windows上⼀一个多媒体处理理框架.并不不⽀支持Windows以外的平台,所以不不是跨平台框架. 按照性质分类,可以分为四⼤大部分,显示部分、声⾳音部分、输⼊入部分和⽹网络部分.

4.Metal

Metal: Apple为游戏开发者推出了了新的平台技术 Metal,该技术能够为 3D 图像提⾼高 10 倍的渲染性能.Metal 是Apple为了了解决3D渲染⽽而推出的框架

OpenGL专业名词解析

状态机:状态机是理论上的一种机器,我理解的状态机其实就是相当于电脑,电脑有内存磁盘,可以记录电脑当前的状态,比如安装的软件,放在磁盘里面的音频,视频,图片等,可以输入外接外设,U盘等,可以根据输入内容修改内存磁盘的内容,也可以记录一些特殊状态,比如关机,关机的时候是不可以输入输出内容,停止工作

上下文:OpenGL只是图形API,它没有窗口的支持,在这里可以先简单的理解为就是这个窗口。也就是说,如果我们要使用OpenGL,需要先为它创建一个窗口。当然OpenGL的Context不只是这个窗口,Context还包含一些参数设置信息,比如当前绘制使用的颜色、是否有光照计算以及开启的光源等非常多我们使用OpenGL函数调用设置的状态和状态属性。

渲染:将需要显示的比如视频/按钮/图片转换成 3D 空间图像的操作叫做渲染(Rendering)。

顶点数组:所有模型都可以看成是由若干个顶点构成,每个顶点有自己的空间坐标、颜色坐标、法线坐标等。所以绘制图形可以通过绘制顶点来完成,但在绘制多个顶点时,使用顶点数据数组要快得多,也要方便得多。OpenGL支持多个顶点数组

顶点缓存区:顶点数据就是图像的轮廓。OpenGL中的图像都是由图元组成。在OpenGL ES中,有3种类型的图元:点、线、三⻆形。每次绘制时从先从内存中加载这些数据,这样会带来绘制延时,因此我们想着在显存中开辟一块区域,在每次绘制间隔就将顶点数据加载过来,这样绘制时直接读取显存中的数据就可以了,明显提高渲染速度。于是,我们需要引入顶点缓冲区。OpenGL由于需要处理内存与GPU的数据传输,也要用到一系列缓冲区对象,顶点缓冲区只是其中之一。在顶点数组的基础上使用顶点缓冲区可以提高渲染速率。

管线:流水线 其实是指三维渲染的过程中显卡执行的,从几何体到最终渲染图像的,数据传输处理计算过程

固定管线:就是OpenGL封装了多种着色器程序块,内置了一段包含了光照、坐标变换、裁剪等诸多功能的固定shader程序来完成。来帮助开发者来完成图形的渲染。开发者只需要传入相应的参数,就能快速完成图形的渲染。类似于iOS开发会封装很多API,而我们只需要调⽤,就可以实现功能,不需要关注底层实现原理

着色器:(shader)是用来实现图像渲染的,用来替代固定渲染管线的可编辑程序

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

固定着色器:OpenGL提供的着色器,就像是苹果提供了固定api,自己只要调用就可以

顶点着色器:(vertex shader)这个是告诉电脑如何打线稿的——如何处理顶点、法线等的数据的小程序。1.确定位置 2.缩放/平移/旋转位置换算3.显示

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

GLSL(自定义着色器):GLSL着色语⾔是⽤来在OpenGL中着⾊编程的语⾔,是在图形卡的GPU上执⾏的。代替了固定的渲染管线的⼀部分,使渲染管线中不同层次具有可编程性。⽐如:视图转换、投影转换等。GLSL(GL Shading Language)的着⾊器代码分成2个部分: Vertex Shader(顶点着⾊器)和Fragment(⽚断着⾊器)。

光栅化:把矢量图形转化成像素点儿的过程。我们屏幕上显示的画面都是由像素组成,而三维物体都是点线面构成的。要让点线面,变成能在屏幕上显示的像素,就需要Rasterize这个过程。就是从矢量的点线面的描述,变成像素的描述。

纹理:纹理可以理解为图⽚。 在渲染图形时需要在顶点围成的区域中填充图⽚,使得场景更加逼真。⽽这⾥使⽤的图⽚,就是常说的纹理。只是在OpenGL,我们更加习惯叫纹理,⽽不是图⽚。

混合:在测试阶段之后,如果像素依然没有被剔除,那么像素的颜⾊将会和帧缓冲区中颜⾊附着上的颜色进⾏混合,混合的算法可以通过OpenGL的函数进行指定。但是OpenGL提供的混合算法有限。如果需要更加复杂的混合算法,一般可以通过片段着⾊器进⾏实现,当然性能会⽐原⽣的混合算法差⼀些。比如layer两个图层 红色0.5 +粉色0.2-> 叠加在一起=颜色混合行为

变换矩阵:例如图形想发⽣平移、缩放、旋转等变换,就需要使用变换矩阵。

投影矩阵

1.正角投影:用于平面图形

2透视投影:用于3D图形,计算机显示器是一个2D平面。OpenGL渲染的3D场景必须以2D图像方式投影到计算机屏幕上

渲染上屏/交换缓冲区(SwapBuffer)

渲染缓冲区⼀一般映射的是系统的资源⽐比如窗⼝口。如果将图像直接渲染到窗⼝口对应的渲染缓冲区,则可以

将图像显示到屏幕上。

但是,值得注意的是,如果每个窗⼝口只有⼀一个缓冲区,那么在绘制过程中屏幕进⾏行行了了刷新,窗⼝口可能显

示出不不完整的图像

为了了解决这个问题,常规的OpenGL程序⾄至少都会有两个缓冲区。显示在屏幕上的称为屏幕缓冲区,没有

显示的称为离屏缓冲区。在⼀一个缓冲区渲染完成之后,通过将屏幕缓冲区和离屏缓冲区交换,实现图像

在屏幕上的显示。

由于显示器器的刷新⼀一般是逐⾏行行进⾏行行的,因此为了了防⽌止交换缓冲区的时候屏幕上下区域的图像分属于两个

不不同的帧,因此交换⼀一般会等待显示器器刷新完成的信号,在显示器器两次刷新的间隔中进⾏行行交换,这个信

号就被称为垂直同步信号,这个技术被称为垂直同步

使⽤用了了双缓冲区和垂直同步技术之后,由于总是要等待缓冲区交换之后再进⾏行行下⼀一帧的渲染,使得帧率

⽆无法完全达到硬件允许的最⾼高⽔水平。为了了解决这个问题,引⼊入了了三缓冲区技术,在等待垂直同步时,来

回交替渲染两个离屏的缓冲区,⽽而垂直同步发⽣生时,屏幕缓冲区和最近渲染完成的离屏缓冲区交换,实

现充分利利⽤用硬件性能的⽬目的

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