
OpenGL(Open Graphics Library):
是一个跨编程语言、跨平台的编程图形程序接口,它将计算机的资源抽象称为⼀个个OpenGL的对象
OpenGL ES:(OpenGL的子集)
(OpenGL For Embedded Systems)是 OpenGL 三维图形 API 的子集,针对⼿机、 PDA和游戏主机等嵌入式设备而设计,去除了许多不必要和性能较低的API接口。
Metal:
Apple为游戏开发者推出了新的平台技术 Metal,该技术能够为 3D 图像提高10 倍的渲染性能.Metal 是Apple为了解决3D渲染而推出的框架
OpenCV
是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Android和Mac OS操作系统上。
OpenGL与OpenCV的区别
OpenGL主要是渲染(显示 -> 位图)
OpenCV主要是识别(人脸识别/身份识别/物体识别),与人工智能相结合
OpenGL /OpenGL ES/ Metal 在任何项⽬中解决问题的本质就是利用GPU芯片来⾼效渲染图形图像.
图形API 是iOS开发者唯⼀一接近GPU的⽅方式.

Attributes属性
属性就是对每一个顶点都要做改变的数据元素,
只能直接传递到顶点着色器Vertex Shader
属性可以是顶点位置、纹理坐标、颜色值、光照等
特点:
1.属性值可以是浮点数、整数、布尔数据
2.属性总是以四维向量的形式进行内部存储的
3.这些属性是应用于每个顶点的,每个顶点都要做出改变,它们的值也可以重复
uniform值
uniform值是一种对整个批次属性都取统一的单一值,可以传递到顶点着色器和片元着色器
它是不变的,设置uniform变量,紧接着就会发送一个图元批次命令,uniform变量实际上可以无数次限制地使用。可以设置一个用于整个表面的颜色值,或是设置一个时间值
这里的uniform变量是每个批次改变一次,而不是每个顶点改变一次
uniform值可以是浮点、整数、布尔值,也可以是标量类型、矢量类型、uniform矩阵
纹理数据Texture Data
在顶点着色器、片元着色器中都可以对纹理数据进行采样和筛选。
比如,片元着色器对一个纹理进行采样,然后在一个三角形表面使用这个渲染的纹理数据
OpenGL 专业名词解析
OpenGL 上下文 ( context )
在应用程序调⽤任何OpenGL的指令之前,需要安排首先创建一个OpenGL的 上下文。这个上下文是一个⾮常庞大的状态机,保存了OpenGL中的各种状态,这也是OpenGL指令执行的基础(类似于一个全局管理者manager)
OpenGL的函数不管在哪个语言中,都是类似C语⾔言一样的⾯向过程的函 数,本质上都是对OpenGL上下文这个庞⼤的状态机中的某个状态或者对象进行操作,当然你得首先把这个对象设置为当前对象。因此,通过对 OpenGL指令的封装,是可以将OpenGL的相关调⽤用封装成为⼀个⾯向对象的图形API的.
由于OpenGL上下⽂是一个巨⼤的状态机,切换上下文往往会产⽣较大的开销,但是不同的绘制模块,可能需要使用完全独立的状态管理。因此,可以在应用程序中分别创建多个不不同的上下文,在不同线程中使用不同的上下文,上下文之间共享纹理、缓冲区等资源。这样的方案,会比反复切换上下文,或者⼤量修改渲染状态,更加合理高效的.
OpenGL 上下文 ( context )特点
1.OpenGL可以记录⾃己的状态(如当前所使用的颜色、是否开启了混合功能等)
2.OpenGL可以接收输入(当调用OpenGL函数的时候,实际上可以看成 OpenGL在接收我们的输入),如我们调用glColor3f,则OpenGL接收到这个输入后会修改⾃己的“当前颜⾊”这个状态;
3.OpenGL可以进入停⽌状态,不再接收输入。在程序退出前,OpenGL总会先停止工作的;
网友评论