opengl与Directx的区别

From: http://blog.163.com/xtdx888888@126/blog/static/2955727520083661133565/

OpenGL 只是图形函数库。

DirectX 包含图形, 声音, 输入, 网络等模块。 

单就图形而论, DirectX 的图形库性能不如 OpenGL

OpenGL稳定,可跨平台使用。但 OpenGL 多需要显卡支持.

----------------------------------------------------------------------------------------------

做windows平台上的游戏,当然是DX,想跨平台,想做科学计算程序,想做CAD,

想做分布计算,想做工业级应用,最好用OpenGL。 

当然你要是对COM不感冒,或是想活得轻松一点,还是OpenGL吧。 

其实DX之所以是游戏首选平台是因为它速度快,在过去支持OpenGL加速的家用卡

或游戏卡很少,而软件计算很慢。但从TNT2/Voodoo3开始,OpenGL已经是非常理

想的游戏平台了,而在geforce256,savarage2000+为代表的四代卡上OpenGL已经

是极为理想的游戏平台了:够快,够眩!另一方面到DX7这套东西质量已经相当不

错了,与OpenGL差距已经很小了,而且是M$的东西……就看你怎么想了,如果想

学得快,用得爽,调试方便,就选OpenGL,如果已经适应COM体系的思想那当然是

DX自然。 

个人建议你学OpenGL,从此入手容易形成正确明确的概念,以后即使工作需要要

转向DX也很容易。重要的是如今的OpenGL的中文资料多起来了,虽然重复的居多

,但还是有几本很不错的,而英文资料则不计其数。 

还有一点,你用什么语言?如果是C则无所谓,如果是VB那还是DX吧,虽然也可以

做OpenGL,但不如DX自然和资料丰富(dx7sdk里有例子的vb版本)。 

----------------------------------------------------------------------------------------------

1995年至1996年,微软实行了一项新计划,以支持在Windows95上运行游戏,目标是把市场扩展到被任天堂和世嘉控制的游戏领域。然而,微软不想用已经在NT上提供的OpenGL技术。微软收购了Rendermorphics,Ltd.并得到他的被称作RealityLab的3D API。经重新整理,微软发布了新的3D API——Direct3D。

    微软,推行Direct3D,冻结OpenGL!

    微软当时拒绝了在Window95上支持OpenGL。不止如此,微软采取异常手段收回对OpenGL的MCD驱动接口的支持,以致硬件厂商不得不放弃已经进入最后测试的OpenGL驱动。微软的市场部门开始向游戏开发商、硬件厂商、新闻出版机构推销Direct3D,同时排斥OpenGL。

      API之战!

      Silicon Graphics和很多OpenGL用户都依赖OpenGL创新且高性能的技术。但很明显微软打算用Direct3D代替OpenGL,尽管D3D有很多问题而且不能像OpenGL那样被硬件厂商扩展。Silicon Graphics决定在1996 SIGGRAPH会议上作一项演示。演示证明OpenGL至少和D3D一样快,从而驳倒微软的市场论调。因为OpenGL是业界公认标准,比D3D功能丰富,而且图像质量要高一些,所以演示在计算机图形和游戏开发社区导致了激烈论战。

    游戏开发者要求OpenGL和D3D站在同等地位!

    当技术和市场问题暴露,强烈的支持OpenGL行动开始了。Doom的开发者John Carmack声明拒绝D3D,Chris Hecker在游戏开发杂志上发表了两套API的全面分析,移微软应放弃D3D为结论。游戏开发者先后两次向微软递交请愿书。第一次由56名首席游戏开发者要求微软发行OpenGL MCD驱动,但未成功,因为会让OpenGL与D3D竞争。第二次的公开信由254人签名开始,截止时达到1400人。微软的回答仍是重申旧市场立场。尽管请愿者清楚的要求两套API同等竞争以促进发展,微软却以增加D3D的投资、更加减少OpenGL的投资为回应。

      Fahrenheit——D3D与OpenGL的合并?

      Silicon Graphics,Microsoft, HP,Intel达成协议联合开发下一代3D API——Fahrenheit。但不了了之,因为微软的打算是把OpenGL的技术用到D3D里并且以此之名驱除OpenGL的威胁。(估计DirectX 8 Graphics即是剩下微软独自开发的Fahrenheit,吸收了OpenGL的很多东西。)

      OpenGL豪气不减当年!

      OpenGL依然是唯一能与微软单独控制的D3D对立的API,尽管Silicon Graphics不再以任何微软不能接受的方式推行OpenGL。游戏开发这是独立的,并且很多关键人物在用OpenGL,因此,硬件厂商正努力提高对其支持。D3D仍不能支持高端图像和专业应用,而OpenGL主宰着这些土地。在开放原码社区,Mesa项目正提供独立于微软的OpenGL驱动。

译者注:表面上好像D3D比OpenGL支持更多的功能,其实由于D3D不支持硬件扩展,如硬件全景阴影,硬件渲染顺序无关半透明材质等新技术根本无法使用,而D3D(特指D3D8)本身提供的功能只有一小部分能在使用HAL且硬件不支持时模拟,你要用大量代码分析硬件能力和采取不同策略


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404644.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[react] shouldComponentUpdate方法是做什么的

[react] shouldComponentUpdate方法是做什么的 shouldComponentUpdate是React组件的生命周期,在组件更新后触发,该方法继承子React.Component.方法的作用是可以在内部比较更新前后的state和props的值,手动控制当前组件是否需要执行render函数…

OSPF区域不能与area 0 相连的解决方法

有些时候,由于区域包含的路由器过多或区域的地理位置原因等,造成网络中配置的OSPF区域(非area 0)不能够与area 0相连。大家都知道,在OSPF的所有区域内,area 0 是骨干区域,非0区域都要与area0相连…

Spark从HDFS上读取JSON数据

代码如下: import org.apache.spark.sql.Row; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; import org.apache.spark.api.java.function.VoidFunction; import org.apache.…

emqx使用webhook数据持久化到mysql

官方文档:WebHook | EMQ Docs 一、启用webhook和触发规则 编辑webhook规则配置文件:/etc/emqx/plugins/emqx_web_hook.conf 指定webhook的url位置:web.hook.url http://127.0.0.1:5000/mqtt/webhook 增加消息推送事件规则:指…

为什么你应该使用OpenGL而不是DirectX?

From: http://www.cnblogs.com/Baesky/archive/2011/04/08/2009128.html 这是一篇很意思的博文,原文链接为:http://blog.wolfire.com/2010/01/Why-you-should-use-OpenGL-and-not-DirectX 大家可以思考一下:why we choose a closed source AP…

[react] Mern和Yeoman脚手架有什么区别?

[react] Mern和Yeoman脚手架有什么区别? MERN是一种脚手架工具,可使用Mongo,Express,React和Nodejs轻松构建同构应用Yeoman也是脚手架工具,它是基于Node.js运行的,生成的技术栈与开发语言无法,…

ReadDirectoryChangesW 函数

ReadDirectoryChangesW 函数 ReadDirectoryChangesW 函数 对指定的目录进行监控,返回详细的文件变化信息。 函数形式01 BOOL WINAPI ReadDirectoryChangesW(02 __in HANDLE hDirectory, // 对目录进行监视的句柄03 __out LPVOID lpBuffer, // …

flask web开发的相关博文学习

一、基础教程 flask-tutorial/SUMMARY.md at master greyli/flask-tutorial GitHubThe Flask Mega-Tutorial Part I: Hello, World! - miguelgrinberg.com全面的Flask教程 - 简书Flask入门教程 - HelloFlask 主推miguelgrinberg,课程如下 二、高级应用 flask-sq…

[react] 请说说什么是useRef?

[react] 请说说什么是useRef? 本质上 createRef 和 useRef(mountRef) 就是创建一个 {current: initialState} 对象然后返回 useRef 本身经历两个阶段:mountRef 和 updateRef,updateRef 就是把 memoziedState&#xff…

【Visual C++】游戏开发笔记十九 DirectX与OpenGL的博弈

From: http://blog.csdn.net/zhmxy555/article/details/7522960 本系列文章由zhmxy555(毛星云)编写,转载请注明出处。 http://blog.csdn.net/zhmxy555/article/details/7522960 作者:毛星云 邮箱: happylifemxyqq.…

写在前面-2015.11.30

本人90后,工作不是很久,大学期间主修软件工程,也在课外班学习java开发,后机缘巧合学习测试。截止2015年末,功测1年经验,(纯手工)自动化没有实战经验仅限于了解。目前性能测试一年。主…

linux c 获取时间戳 打印时间戳

以下是项目开发中常用到的时间戳接口,可以直接用。 一、相关接口 二、代码实现 char* lgw_get_now_time(void) {time_t timep;time(&timep);return asctime(localtime(&timep)); } int lgw_get_now_tick(void) {time_t timep;time(&timep);return ti…

[react] react的性能优化在哪个生命周期?它优化的原理是什么?

[react] react的性能优化在哪个生命周期?它优化的原理是什么? shouldComponentUpdate 减少不必要的重新渲染 个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣…

让source insight更好的支持中文

From: http://blog.csdn.net/aylixuan/article/details/6066126 1.记事本录入以下文字: /* * 代替SourceInsight原有的Backspace功能(希望如此) * 增加了对双字节汉字的支持,在删除汉字的时候也能同时删除汉字的高字节而缓解…

阿里云linux主机安装qt报错:缺少libxkbcommon-x11.so.0

ubuntu云主机安装xfce桌面后,下载qt5.12.10,开发桌面应用,安装qt时报错缺少libxkbcommon-x11.so.0。 由于xfce是轻量级桌面不带libxkbcommon-x11.so.0,而qt5.12.10默认系统已经自带,所以,报错。此时更新一下…

[react] 你知道的react性能优化有哪些方法?

[react] 你知道的react性能优化有哪些方法? shouldComponentUpdate PureComponent :Class ComponentReact.Memo :Function ComponentuseCallback :Memoized FunctionuseMemo :Memozied Value个人简介 我是歌谣&#…

【转】XP/2000无法使用“缩略图查看”、右键无“设置桌面背景”选项问题详解...

许多朋友在XP或2000系统下查看图片时,经常碰到以下几个问题: 1. 当我查看文件夹里面的图片,以缩略图方式查看时,却发现系统不能显示图片内容了,只是出来一个简单的图片图标(就和我们以图标或平铺显示的…

PHP的curl实现get,post 和 cookie(几个实例)

类似于dreamhost这类主机服务商,是显示fopen 的使用 的。使用php的curl可以实现支持FTP、FTPS、HTTP HTPPS SCP SFTP TFTP TELNET DICT FILE和LDAP。curl 支持SSL证书、HTTP POST、HTTP PUT 、FTP 上传,kerberos、基于HTT格式的上传、代理、cookie、用户…

Qt treeWidget 查找指定字段内容的条目并跳转到该条目

遍历Qt treeWidget,查找指定字段内容的条目,并跳转到该条目。 void MainWindow::on_pushButton_sidFind_clicked() {QString sid ui->lineEdit_sidFind->text();QTreeWidgetItemIterator it(ui->treeWidget_sqItem);while (*it) {if ((*it)-&…