OpenGL与OpenCL是何关系?
OpenGL = Open Graphics Library
OpenCL = Open Computing Language
OpenCL和OpenGL是两个不同的API。
OpenGL是3D API。
OpenCL是GPU通用运算API。
OpenGL或DirectX是什么呢?是负责3D图形处理的API,包括各种光照、纹理、烟雾、阴影等效果。程序员在开发游戏的时候,只要考虑什么时候、在哪个位置,加上什么样的烟雾,就可以了。而不必考虑究竟要怎样去编写代码,才能实现烟雾效果的问题。
OpenCL呢?是显卡作通用浮点运算的API。比如视频转码,原来这个工作都是CPU来做的。现在显卡运算能力比较强,这个工作完全可以交给显卡来做。那究竟怎样调用显卡呢?这个工作不需要再由程序员考虑了,因为已经有一个现成的接口了,程序员只要管好转码的算法,然后直接调用OpenCL中现成的指令,这个工作就自动由CPU转交到GPU了。
现在大部分游戏都是用DirectX来渲染的. OpenGL现在更多用于专业绘图 图形站。
90年代末Apple放弃了自己的QuickDraw 3D,将OpenGL作为Mac OS X的官方3D库。Apple的系统给OpenGL程序带来了不少拥护者。之后OpenGL正式被Linux采用。
OpenCL对开发者、业界人员和消费者来说都是一个非常好的API,它可以使得开发者很容易的开发出跨平台的GPU计算程序,充分利用GPU强大的计算能力然后应用在各种领域,而且OpenCL亦是CUDA架构的一种有益补充。
其实 OpenCL 和 OpenGL 的关系还是很紧密地
OpenCL 的计算结果可以直接拿到 OpenGL 去做渲染。其他引擎之间就没这么容易了,得转换
而且语法非常相近
OpenGL 的函数声明都是 "gl" 开头
拿到 OpenCL 就变成 "cl" 开头,有很多函数名称和用法都相似, 熟悉 GL 的应该不难上手