首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenGL和Direct3D

OpenGL和Direct3D
EN

Stack Overflow用户
提问于 2009-06-09 20:40:09
回答 3查看 1.5K关注 0票数 3

OpenGL和Direct3D有什么区别?它们真的是不同的实现来完成相同的事情(就像Java和Mirosoft的CLR .NET)吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-06-09 20:52:48

它们是非常不同的图形API,但公平地说,它们完成的大多是相同的事情。如果你在windows下开发游戏(或者XBOX的游戏),DirectX可能是你选择的API,如果你想要跨平台的支持,OpenGL是你的选择。例如,Mac和iPhone一样使用GL,许多windows游戏也支持OpenGL。

因为OpenGL是经过很长时间和“委员会”开发的,所以它有很多负担--它有一些旧的选项,现在已经不再重要了。这是OpenGL ES的原因之一;它去掉了所有的垃圾,使目标平台更容易。

另一方面,DirectX是由微软控制的,因此它有一种更“现代”的感觉(它基于COM组件,所以是高度面向对象的)。MS经常更新API以匹配新硬件。

有时你没有选择的余地(例如,iphone不能运行DX)。但通常情况下,这只是个人偏好/经验的问题。如果你是一个长期的图形程序员,你倾向于对这两个都非常熟悉……

票数 9
EN

Stack Overflow用户

发布于 2009-06-09 20:45:36

谷歌在这种情况下是你的朋友…维基百科有一篇很好的文章对比了这两个库:

Comparison of OpenGL and Direct3D

如果我没记错的话,在Direct3D出现之前,OpenGL是一个开放的实现。然后,基于OpenGL...but的Direct3D迅速分道扬清,成为它自己独特的库。

更新

看起来我的记忆已经消失了..。

Direct3D是独立于OpenGL开发的。

票数 3
EN

Stack Overflow用户

发布于 2011-09-01 02:09:12

Direct3D和OpenGL是用来完成相同任务的不同接口。

D3D和GL的主要区别在于D3D是面向对象的,而GL不是。D3D9和GLES2基本上具有相同的功能。实际上,如果您计划使用OpenGL,并且不需要任何GL3或GL4特性,那么您的所有代码都应该基于GLES2应用编程接口(所有GLES2特性都在GL2中,反之亦然)。

如果可能,你应该总是在windows上使用D3D而不是GL,因为多线程和驱动程序的支持是不稳定的。以上网本为例,它们在ShaderModel 2中支持D3D的HLSL,但不支持GLSL的等价物,它们只支持GL的固定管道。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/972371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档