创作理由:开始做的时候,我就在想:一会儿OpenGL,一会儿OpenCL。是不是文档打错字了啊?查资料才得知,分工不一样。所以我决定好好的认识认识这些个玩意儿。


OpenGL (Open Graphics Library)

客观定义: OpenGL 是一个规范,定义了一组用于绘制 2D 和 3D 图形的函数。它广泛应用于计算机图形领域,包括游戏开发、CAD、虚拟现实等。

作用: OpenGL 允许开发者编写跨平台的图形应用程序,通过提供一个标准化的 API 接口,帮助实现复杂的图形渲染任务。

形象理解: 可以将 OpenGL 看作是一组画笔和颜料,画家(程序员)使用这些工具在画布(显示屏)上绘制出各种精美的图形和动画。高端的绘制工具,哥们儿高ES一等,用在主机这种高水平高算力平台之上



OpenCL (Open Computing Language)

客观定义: OpenCL 是一个开放的并行计算标准,定义了一组用于在异构平台(包括 CPU、GPU 等)上进行并行计算的 API。它不局限于图形渲染,还可以用于广泛的计算任务。

作用: OpenCL 允许开发者编写跨平台的并行计算程序,使得不同硬件设备可以共同参与复杂的计算任务,提高计算效率和性能。

形象理解: 可以将 OpenCL 看作是一群协调合作的工人(CPU、GPU),他们各自擅长不同的任务,但通过 OpenCL 的统一调度,可以高效地完成复杂的工程项目(计算任务)。哥们儿我主要用于并行计算,可还行,咱可不会只会图形渲染哦。主打跟GL侧重点不一样。

嵌入式开发板上用GPU(3)__专有名词认识_OpenCL

嵌入式开发板上用GPU(3)__专有名词认识_OpenCL_02



OpenGLES (OpenGL for Embedded Systems)

客观定义OpenGLES 是 OpenGL 的一个子集专门为嵌入式系统设计,如移动设备、嵌入式设备等。它提供了一个简化的、适合资源受限环境的图形 API。《经过实验得知,开发板一般都没有GL,只有GLES

作用: OpenGLES 使得嵌入式设备能够进行高效的 3D 图形渲染,适用于智能手机、平板电脑、车载系统等。

形象理解: 可以将 OpenGLES 看作是 OpenGL 的迷你版,专门为小画板(嵌入式设备)设计,依然能够绘制出漂亮的图形,但更加高效和节省资源。小弟我虽然弱,但是服务千万家arm开发板,更加亲民。所以你会发现很多开发板上都有其库和头文件:《这意味着什么?意味着你有了开发这个玩意儿的环境了

Mesa

客观解释: Mesa 是一个开源的 3D 图形库项目,实现了多个图形 API,包括 OpenGL、OpenGLES 和 OpenCL。它为 Linux 等操作系统提供了一个通用的图形驱动程序框架。

作用: Mesa 主要用于为各种硬件设备(如 GPU)提供图形渲染支持。它使得不同的硬件可以通过统一的接口进行高效的 3D 图形处理和计算。

形象理解: 可以将 Mesa 看作是一个翻译官,它将图形 API(如 OpenGL、OpenGLES、OpenCL)翻译成特定硬件设备可以理解的指令,从而使得这些硬件设备可以正确地执行图形渲染和计算任务。OpenGL、OpenGLES 和 OpenCL你们都牛,老子直接收下你们所有API,我是牛中牛,拥有我,就是拥有了操控GPU的所有方法。(夸张说法哈)


                     

为了便于理解,搜索资料后我做了一个流程图,来理解这四个的配合流程(若有错误,请指出)

嵌入式开发板上用GPU(3)__专有名词认识_API_03