Linux应用开发(二)——OpenGL与OpenCL是何关系

Linux应用开发(二)——OpenGL与OpenCL是何关系

小狼@http://blog.csdn.net/xiaolangyangyang


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 的应该不难上手

OpenCL 的计算结果可以直接拿到 OpenGL 去做渲染?

请问这个如何实现啊?用OpenCL计算得到的一块数据直接作为vertexbuffer,texture?2个完全不同的context如何share这个资源?

OpenCL Extending OpenGL - OpenCL 1.0: The Road to Pervasive GPU Computing

文章提出了一种可能,但没有现在可以用的办法,标准在等待制定,我感兴趣的就是这个标准如何制定。无论如何,让OpenGL 和 OpenCL协同工作都是一个相当大而有意思的想法,很期待。


GPU编程接口有如下

OpenGL/ES:图形渲染接口,多用于PC和Android手机

OpenCL:并行计算接口,最初由apple开发

vulkan:图形渲染接口,可能会替代OpenGL

directx:微软图形渲染接口,用于PC

cuda:英伟达并行计算接口

metal:apple图形渲染接口


GPU编程入门

OpenGL与OpenCL是何关系?

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值