OpenGL 专业名词解析

OpenGL (Open Graphics Library)

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

OpenGL ES (OpenGL for Embedded Systems)

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

DirectX

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

Metal

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

OpenGL与OpenGL ES的区别
  1. OpenGL 主要运用于PC端的图形图像渲染处理(MAC,windows)
  2. OpenGL ES 主要运用于移动端(iOS,Android)
OpenGL与OpenCV的区别
  1. OpenGL主要用于渲染(显示位图)
  2. OpenCV主要用于识别(人脸识别、身份识别、物体—>OpenCV face++)与人工智能结合
OpenGL ES与Metal的区别
  1. Apple 至2018年渲染部分例如CoreAnimation是基于OpenGL ES封装的上层框架,2018年后底层渲染迁移到了Metal
  2. OpenGL ES作为第三方库没法契合你项目定制化需求,没法迭代
  3. 很多的项目目前还是使用的OpenGL ES (跨平台,GLSL兼容iOS和Android)
  4. 替代原因:
    4.1 不可能一直把非常重要的渲染核心框架使用第三方
    4.2 调用GPU来进行运行(GPU并发运算,编码解码,识别,大量并发运算,2018年开始通过Metal提供的接口,让你调用GPU来自定义事情.借助Metal调度GPU来给你做运算)

图形API解决什么问题:--->渲染问题

  1. 系统针对按钮、图片、视图、图层渲染问题
  2. 游戏引擎->人物/场景渲染(图形API)
  3. 视频播放方框--->ijkplayer,kxmovie视频解码--->渲染(图形API)
  4. 核心动画--->动画操作(旋转、缩放、平移、图层特效)
  5. 视频/图片--->特效(图形API)
  6. 离屏渲染
OpenGL 01.png
OpenGL上下文[context]

在应用程序调用任何OpenGL的指令之前,需要安排首先创建一个OpenGL的上下文。这个上下文(环境)是一个非常庞大的状态机,保存了OpenGL中的各种状态,这也是OpenGL指令执行的基础

OpenGL 状态机

类推到OpenGL中来,可以这么理解:
OpenGL可以记录自己的状态(如当前所使用的颜色,是否开启了混合功能等)
OpenGL可以接收输入(当调用OpenGL函数的时候,实际上可以看成OpenGL在接收我们的输入),如果我们调用glColor3f,则OpenGL接收到这个输入后会修改自己的"当前颜色"这个状态
OpenGL可以进入停止状态,不再接收输入,在程序退出前,OpenGL总会先停止工作的

OpenGL 渲染

将图形/图像数据转换成2D空间图像操作叫做渲染(Rendering)

OpenGL 顶点数组(VertexArray)

将顶点数据存放在内存中

OpenGL 顶点缓冲区(VertexBuffer)

将顶点数据存放到GPU的显存中

png转换为位图(CoreGraphics)
位图: 120*120 = 14400 -->RGBA --->14400 *4 = 位图(纹理)
映射: 对应关系

OpenGL 管线:流水线

//工厂:肥皂 --->肥皂水--->模具--->肥皂块

固定管线

对应非常多的模具(固定着色器)--->结果

可编程管线

肥皂--->肥皂水--->自定义编程模具(GLSL语法来驱使GPU来进行代码实现)--->肥皂快(OpenGL ES GLSL)

着色器

函数/方法(代码段)--->CPU来使用;shader(代码段)--->GPU来使用

固定着色器(存储着色器)

苹果提供API(代码段)--->调用(参数)OpenGL来提供

自定义着色器

进行自定义(自己基于GLSL来进行编写代码段)

顶点着色器

用来处理顶点相关代码 (1.确定位置 2. 缩放/平移/旋转位置换算 3.手机端显示3D 手机屏幕实际2D,3D图形数据--->2D(投影换算)--->OpenGL ES)

片元着色器

片元(像素点)着色器,处理一个一个像素点;120*120 像素点.14400次 GPU并行运算;(例如图片进行饱和度调整--->片元着色器进行一个个像素点修改)--->OpenGL ES

GLSL(OpenGL Shading Language)

自定义着色器--->代码(语言) OpenGL 标准调用GPU来做计算

光栅化(Rasterization不可编程)

是把顶点数据转换为片元的过程,具有将图转化为一个个栅格做成的图像的作用,特点是每个元素对应帧缓冲区中的一个像素。
把物体的数学描述以及与物体相关的颜色信息转换为屏幕上用于对应位置的像素及用于填充像素的颜色,这个过程称为光栅化
离屏渲染shouldRa--->触发离屏渲染
第一个过程: 决定窗口坐标中的哪些整型栅格区域被基本图元占用
第二个过程: 分配一个颜色值和一个深度值到各个区域.、

OpenGL 02.png
纹理

纹理可以理解为图片,大家在渲染图形时需要在其编码填充图片,为了使得场景更加逼真,而这里使用的图片,就是常说的纹理,但是在OpenGL,我们更加习惯叫纹理,而不是图片
压缩图片--->位图 OpenGL .tga 纹理文件 OpenGL ES 移动端显示一张 png--->位图

混合

Layer2个图层--->粉红色0.5,蓝色0.2 = 叠加在一起 = 颜色混合行为--->离屏渲染 组透明度 --->OpenGL

变换矩阵(Transformation)

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

投影矩阵(Projection)

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

投影方式(观察者视角)

只有两种
1.正投影(平行投影)图片绘制不管远近1:1进行绘制,显示2D效果
2.透视投影 远小近大的效果,3D图形

摄像机坐标系

观察者坐标系

物体坐标系

物体本身的坐标系

世界坐标系

所有的物体都在世界坐标系范围内

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

推荐阅读更多精彩内容