什么是OpenCL?

  OpenCL全称Open Computing Language,是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器(DSP)等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景。
  
  OpenCL 1.0主要由一个并行计算API和一种针对此类计算的编程语言组成,此外还特别定义了:

  1、C99编程语言并行扩展子集;

  2、适用于各种类型异构处理器的坐标数据和基于任务并行计算API;

  3、基于IEEE 754标准的数字条件;

  4、与OpenGL、OpenGL ES和其他图形类API高效互通。

  什么是OpenGL?

  OpenGL™ 是行业领域中最为广泛接纳的 2D/3D 图形 API, 其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序。OpenGL™ 是独立于视窗操作系统或其它操作系统的,亦是网络透明的。在包含CAD、内容创作、能源、娱乐、游戏开发、制造业、制药业及虚拟现实等行业领域中,OpenGL™ 帮助程序员实现在 PC、工作站、超级计算机等硬件设备上的高性能、极具冲击力的高视觉表现力图形处理软件的开发。

  OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图象(二维的亦可)。OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库。OpenGL的前身是SGI公司为其图形工作站开发的IRIS GL。IRIS GL是一个工业标准的3D图形软件接口,功能虽然强大但是移植性不好,于是SGI公司便在IRIS GL的基础上开发了OpenGL。OpenGL的英文全称是“Open Graphics Library”,顾名思义,OpenGL便是“开放的图形程序接口”。虽然DirectX在家用市场全面领先,但在专业高端绘图领域,OpenGL是不能被取代的主角。

  Open GL仍然是唯一能够取代微软对3D图形技术的完全控制的API。它仍然具有一定的生命力,但是Silicon Graphics已经不再以任何让微软不悦的方式推广Open GL,因而它存在较高的风险。游戏开发人员是一个有着独立思想的群体,很多重要的开发人员目前仍然在使用Open GL。因此,硬件开发商正在设法加强对它的支持。Direct3D目前还不能支持高端的图形设备和专业应用; Open GL在这些领域占据着统治地位。最后,开放源码社区(尤其是Mesa项目)一直致力于为任何类型的计算机(无论它们是否使用微软的操作系统)提供Open GL支持。
  
  今年08年正式公布OpenGL3.0版本。并且得到了,nv的支持,其官方网站上提供针对N卡的sdk下载。

  什么是DirectX?

  DirectX是一种应用程序接口(API),它可让以windows为平台的游戏或多媒体程序获得更高的执行效率,加强3d图形和声音效果,并提供设计人员一个共同的硬件驱动标准,让游戏开发者不必为每一品牌的硬件来写不同的驱动程序,也降低用户安装及设置硬件的复杂度。这样说是不是有点不太明白,其实从字面意义上说,Direct就是直接的意思,而后边的X则代表了很多的意思,从这一点上我们就可以看出DirectX的出现就是为了为众多软件提供直接服务的。

  DirectX是由很多API组成的,按照性质分类,可以分为四大部分,显示部分、声音部分、输入部分和网络部分。

  显示部分担任图形处理的关键,分为DirectDraw(DDraw)和 Direct3D(D3D),前者主要负责2D图像加速。它包括很多方面:我们播放mpg、DVD电影、看图、玩小游戏等等都是用的DDraw,你可以把它理解成所有划线的部分都是用的DDraw。后者则主要负责3D效果的显示,比如CS中的场景和人物、FIFA中的人物等等,都是使用了DirectX的 Direct3D。

  OpenCL、OpenGL和DirectX之间不得不说的故事

  业界对Apple的OpenCL的支持将成为它发展的重要因素,早在90年代中期,微软就曾经努力阻止OpenGL成为行业的标准,以推行自己的DirectX显卡软件和游戏工具。微软的Direct X起初的战略是为了推动DOS游戏开发者转向Windows,从此之后它就被绑定在Windows下为PC游戏服务,所以它仅支持Windows。

  断发布新版的DirectX也推动了开发者转向最新版的Windows,比如最新版的DirectX 10就带来了不少Vista专属游戏,从而推动了Vista的销量,然而它并未达到预期的效果,因为Vista的速度阻碍了DirectX10游戏的市场,开发者只能将目标再次转向XP。

  OpenGL和Apple

  OpenGL的前身是高端图形工作站厂商SGI在80年代所开发的IRIS G,它在90年代初期成为了开源的标准。当时微软在它的Windows 95中发布了Direct3D,将它作为OpenGL的竞争对手。而在90年代末,微软曾经和SGI进行了Fahrenheit项目的开发,试图将两者结合起来,但是没有成功。之后微软继续开发DirectX并与GPU厂商合作,留下OpenGL任其发展。

  OpenGL之后几乎逐渐消失,直到90年代末Apple放弃了自己的QuickDraw 3D,将OpenGL作为Mac OS X的官方3D库。Apple的系统给OpenGL程序带来了不少拥护者。之后OpenGL正式被Linux采用,现在主流的游戏平台,包括PSP,PS3 和Wii都支持该技术。

  但是微软的Xbox360例外,它采用了自己的DirectX 图形库,而将OpenGL排除在外。如今OpenGL对DirectX来说比以前更有竞争力了。而微软计划在Windows 7中的DirectX 11增加类似于OpenCL的技术,以实现GPGPU运算。但是Apple的OpenCL能更紧密地与OpenGL代码协同工作,能带来更广泛的支持。 Apple还将OpenCL作为一个免费的,开源的标准,让任何人都能参与到该平台中来。

  OpenGL和OpenCL设计的相似性,使开发者更易于开发。比如在OpenCL下进行数据虚拟化计算,可以把相同的对象在OpenGL上进行图形渲染。同时OpenGL下的图形渲染可以在OpenCL下进行处理和转换。

  OpenCL得到了GPU厂商NVIDIA和AMD的支持,同时支持Apple,SONY,任天堂的平台,还支持Linux和Windows,而且任何公司的开发者都可以参与到该技术的发展中来。

OpenGL是一个开放的三维图形软件包,它独立于窗口系统和操作系统,以它为基础开发的应用程序可以十分方便地在各种平台间移植;OpenGL可以与Visual C++紧密接口,便于实现机械手的有关计算和图形算法,可保证算法的正确性和可靠性;OpenGL使用简便,效率高。它具有七大功能:
1.建模:OpenGL图形库除了提供基本的点、线、多边形的绘制函数外,还提供了复杂的三维物体(球、锥、多面体、茶壶等)以及复杂曲线和曲面绘制函数。
2.变换:OpenGL图形库的变换包括基本变换和投影变换。基本变换有平移、旋转、缩放、镜像四种变换,投影变换有平行投影(又称正射投影)和透视投 影两种变换。其变换方法有利于减少算法的运行时间,提高三维图形的显示速度。
3.颜色模式设置:OpenGL颜色模式有两种,即RGBA模式和颜色索引(Color Index)。
4.光照和材质设置:OpenGL光有自发光(Emitted Light)、环境光(Ambient Light)、漫反射光(Diffuse Light)和高光(Specular Light)。材质是用光反射率来表示。场景(Scene)中物体最终反映到人眼的颜色是光的红绿蓝分量与材质红绿蓝分量的反射率相乘后形成的颜色。
5:纹理映射(Texture Mapping)。利用OpenGL纹理映射功能可以十分逼真地表达物体表面细节。
6:位图显示和图象增强图象功能除了基本的拷贝和像素读写外,还提供融合(Blending)、抗锯齿(反走样)(Antialiasing)和雾(fog)的特殊图象效果处理。以上三条可使被仿真物更具真实感,增强图形显示的效果。
7:双缓存动画(Double Buffering)双缓存即前台缓存和后台缓存,简言之,后台缓存计算场景、生成画面,前台缓存显示后台缓存已画好的画面。
此外,利用OpenGL还能实现深度暗示(Depth Cue)、运动模糊(Motion Blur)等特殊效果。从而实现了消隐算法。

OpenCL = Open Computing Language(开放运算语言)

OpenCL是一个为异构平台编写程序的框架,此异构平台可由CPU,GPU或其他类型的处理器组成。OpenCL由一门用于编写kernels (在OpenCL设备上运行的函数)的语言(基于C99)和一组用于定义并控制平台的API组成。OpenCL提供了基于任务分割和数据分割的并行计算机制。
OpenCL类似于另外两个开放的工业标准OpenGL和OpenAL,这两个标准分别用于三维图形和计算机音频方面。OpenCL扩展了GPU用于图形生成之外的能力。OpenCL由非盈利性技术组织Khronos Group掌管。

OpenCL最初苹果公司开发,拥有其商标权,并在与AMD,IBM,英特尔和nVIDIA技术团队的合作之下初步完善。随后,苹果将这一草案提交至Khronos Group。
2008年6月的WWDC大会上,苹果提出了OpenCL规范,旨在提供一个通用的开放API,在此基础上开发GPU通用计算软件。随后,Khronos Group宣布成立GPU通用计算开放行业标准工作组,以苹果的提案为基础创立OpenCL行业规范。5个月后的2008年11月18日,该工作组完成了OpenCL 1.0规范的技术细节。2010年6月14日,OpenCL 1.1 发布。2011年11月15日,OpenCL 1.2 发布。

OpenCL、OpenGL和DirectX三者的区别相关推荐

  1. OpenCV,OpenGL,DirectX三者的区别

    OpenCV 算法合集,多用于图像识别,和matlab,CxImage这个两库功能相同 OpenGL 3D绘制,和direct3D做的是同一件事 DirectX 微软做的一个超大的多媒体处理合集,包括 ...

  2. GDI与OpenGL与DirectX之间的区别

    图形编程的几种技术对比: GDI,图形设备接口,MS开发的通用的windows系统图形编程接口,功能强涉及面广,一般的编程都用它.但是用来做多媒体开发就差强人意了 OPENGL是SGI开发的一套三维图 ...

  3. OpenCV/OpenCL/OpenGL区别

    OpenCV/OpenCL/OpenGL区别: OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言.跨平台的应用程序接口(API)的规格,它用于生成二维.三维图像. ...

  4. [转] Carmack 谈 d3d 与 ogl,定位专业应用的OpenGL,专注娱乐应用的DirectX,未来:OpenGL、DirectX并行发展

    http://blog.csdn.net/xieyuquan/archive/2006/10/05/1321801.aspx 我找不到一个理由不让这篇文章多一份Copy 原地址:http://bbs. ...

  5. [转] Carmack 谈 d3d 与 ogl, 定位专业应用的OpenGL, 专注娱乐应用的DirectX, 未来:OpenGL、DirectX并行发展...

    我找不到一个理由不让这篇文章多一份Copy 原地址:http://bbs.emu-zone.org/forums/archive/index.php/t-70.html 在经过这段时间的积累和沉淀 再 ...

  6. 计算机图形学中OpenGL和DirectX

    引言 接触计算机图形学,一定听说过两大编程接口:OpenGL和DirectX,两者之间不断竞争,也不断促进着各自的发展.API大战真的很有意思,一起来看看这两大BOSS究竟是什么,实力如何? Open ...

  7. 什么是DirectX,DirectShow与DirectX有什么区别?

    在介绍同三维万能高清视频采集卡和全能音视频解码编码器软件等多媒体软件时,我们多次提到DirectShow.DirectX,那么什么是DirectShow?什么是DirectX,DirectShow与D ...

  8. 各类三维引擎综合概述(OpenGL、DirectX、WebGL、UE4、U3D、ACIS、ParaSolid)

    关于OpenGL.DirectX.OpenCV OpenCV OpenCV是 Open Source Computer Vision Library 主要是提供图像处理和视频处理的基础算法库,还涉及一 ...

  9. 我先了解一下博客园创建随笔/文章/日记的过程与三者的区别(隐私等级,是否审核等)...

    我先了解一下博客园创建随笔/文章/日记的过程与三者的区别(隐私等级,是否审核等) 转载于:https://www.cnblogs.com/Totooria-Hyperion/p/5260289.htm ...

最新文章

  1. Java面试题库,mysql远程访问权限设置
  2. Artificial Intelligence and Change Management
  3. 《Sibelius 脚本程序设计》连载(四) - 1.1 创建第一个插件
  4. 机器学习之LDA主题模型算法
  5. 计算机网络工程教程:基于cisco路由器和交换机,计算机网络工程教程—基于cisco路由器和交换机教学课件作者陆魁军chap2交换机VLAN设置v2.ppt...
  6. ubuntu adduser
  7. IV值和WOE值的理解
  8. Android 配置SUPL
  9. IOC容器构造之资源文件定位源码分析
  10. 如何免费将XPS转换为PDF格式
  11. 保持公司电脑不锁屏技巧
  12. 高中英语语法(001)-虚拟语气
  13. 洛谷-P3975 弦论(后缀自动机板子题)
  14. CSS控制print打印样式
  15. 交换式局域网_SWITCH交换模式
  16. 合格前端系列第七弹-移动端开发踩过的一些坑
  17. 自媒体文章一文多发的几种方式
  18. JETSON AGX XAVIER GMSL2接口相机驱动
  19. Linux tar命令详解
  20. 判断CStdioFile的类成员有没有打开

热门文章

  1. 成功入职字节跳动的小姐姐告诉你,Android面试吃透这一篇就没有拿不到的offer!
  2. php启动laravel调度任务(laravel定时任务)
  3. 蛙泳、自由泳、仰泳、蝶泳,图解动画,教你游泳,不会游的看了包你学会!!!
  4. 为什么在Unix下编程,而不在Linux下编程
  5. 把jquery city-picker地区选择插件数据改成微信小程序省市地区数据一样(php代码抓取微信小程序地区数据)
  6. 有关实验室电源远程监控系统的设计与实现
  7. 计算机里的备份怎样存入百度云,百度网盘电脑怎么关闭备份
  8. 常见标点符号的英文表达
  9. 300行代码实现Minecraft(我的世界)大地图生成
  10. 对于生下来只通过短视频学习的小孩来说,他还需要识字么?