最全面、最前沿、最专业的游戏研发实战

提供最全面的游戏研发技能分享,让您在最短时间变成高级游戏工程师

查看:0|回复:7

【行业】Windows 支持 DirectX 和 OpenGL,为什么大多数 PC 游戏还是 DirectX 开发?

 attach_img

4

帖子

5

回复

9

积分
最后登录:
2025-03-30 14:10
注册时间:
2023-03-12 17:23
楼主
  发表于:2025-03-30 16:38:37|查看用户信息

Windows 支持 DirectX 和 OpenGL,为什么大多数 PC 游戏还是 DirectX 开发?

1

帖子

2

回复

3

积分
最后登录:
2025-03-30 14:28
注册时间:
2023-05-16 01:30
1 楼
  发表于:2025-03-30 16:41:41|查看用户信息

事实上在早年OpenGL即使在游戏领域也是对DirectX压倒性的优势。John Carmack曾嘲讽DirectX是“horribly broken” 的API。


直到DirectX6时代OpenGL都被认为是比DirectX更加优秀的API,即使那个时候DirectX已经有《CS》《极品飞车5》等大作的支持,却依然不受当时FPS游戏霸主id Software的待见。作为那个时代的显卡杀手,《Quake III》都仅仅只支持OpenGL。


DirectX7发布之后DirectX和OpenGL开始逐渐平起平坐。直到2000年DirectX8的发布才使DirectX在游戏领域完全确立了自己的优势 —— 支持革命性的programmable GPU rendering pipeline来代替原有的fixed function pipeline,引入了Vertex Shader和Pixel Shader。而OpenGL的核心正式支持programmable rendering pipeline已经是四年之后OpenGL 2.0发布的时候了,想想这中间会有多少游戏公司/游戏引擎公司会倒向DirectX吧。


说到OpenGL衰落的原因,不得不提到OpenGL开发的机制。OpenGL早期一直是由ARB (OpenGL Architecture Review Board,成员包括Nvidia, ATI, Intel, Apple, IBM, SGI等等)成员共同维护。每个成员可以为了支持自己硬件新的feature来开发OpenGL enxtension, 所有成员一致通过的extension才能加入到下个版本OpenGL核心中。这就造成了不同成员为了各自利益互相斗争,拖慢了开发进度,微软曾经也是ARB的成员之一,后来因为受不了这种机制退出专心搞自己的DirectX去了。


如果一个API越流行,那么去学习这个API的人就会越多,游戏公司会越容易招到掌握这个API的图形程序员,也就会更多的基于这个API开发游戏。用这个API的游戏越来越多,就会更多的得到


硬件厂商的支持,为面向这个API的驱动做更多的优化,然后这个API就会更加流行。如此进入一个良性循环,这就造成了DirectX现在称霸游戏领域,OpenGL几乎绝迹的局面。


在06年从ARB交由Khronos Group掌管之后, OpenGL最近几年也迎头赶上,从性能,易用性来说其实和DirectX已经相差不大。但是在相比DirectX没有突出优点的情况下(除了跨平台),已经习惯使用DirectX的游戏厂商也不可能重新投出OpenGL的怀抱。


最后一点,OpenGL只是一个单纯的图形库,而DirectX是包含图形(Direct3D), 声音(DirectSound), 输入(DirectInput), 网络(DirectPlay)的一整套游戏开发解决方案。对开发者来说使用DirectX显然要方便的多。


2

帖子

5

回复

6

积分
最后登录:
2025-03-30 12:59
注册时间:
2024-10-11 22:10
2 楼
  发表于:2025-03-30 16:42:23|查看用户信息

似乎没人提到生态环境问题。

dx的生态环境包括很方便的调试工具、资源查看工具、指令流截取工具,gl的生态环境只能吃屎。

0

帖子

4

回复

4

积分
最后登录:
2025-03-30 16:21
注册时间:
2023-03-12 16:59
3 楼
  发表于:2025-03-30 16:44:09|查看用户信息

对于从游戏开发者角度而言,OpenGL 曾经是个没人用的东西,Windows / Xbox 上可以用 DirectX,PS3 和 Wii 则又是另外的图像API。

直到iPhone的兴起,OpenGL 居然又活了过来,你看现在连 WebGL 都出现了,有一种统一天下的感觉。

游戏开发者又开始重视 OpenGL 了,当然主要还是 OpenGL ES。

对于显卡公司而言,Windows 上的 D3D 驱动特别重要,会针对各种流行游戏进行定制、优化、hack……至于 OpenGL 驱动,似乎只要满足 CAD 大厂的需求即可,毕竟几乎没有 Windows 上的 OpenGL 游戏啊……

现阶段,从性能考虑(D3D 驱动会特别优化),大型的游戏还是以 D3D 的形式发布,不排除 OpenGL 的优化上去以后也会有大型的桌面 OpenGL 游戏。

对于微软而言,他对于OpenGL的限制非常多,比如WindowsRT,Windows Phone是不支持OpenGL,Windows商店里的应用也必须是DirectX的。


4

帖子

3

回复

6

积分
最后登录:
2025-03-30 13:08
注册时间:
2023-01-12 14:23
4 楼
  发表于:2025-03-30 16:45:49|查看用户信息

之前我给Team做Sharing的时候也有这样的疑问。既然OpenGL又能跨平台又能高性能,为何主流游戏厂商仍然还是坚持在各个平台使用特定GL API开发游戏/引擎呢?

其实原因也很简单,就俩:

1、OpenGL只是一套通用标准,具体平台、特别是具体硬件,都必须做特殊处理,对于那些特殊调优、Bug是无能为力的;

2、电子游戏追求的是极致的性能,而并非开发效率,而开发效率本质上不取决于GL API,而是开发框架和引擎,例如Unity, UE;

从开发者的角度来说,除非说你需要从头开始造轮子,或者一定要追求最极致的性能,那么使用OpenGL和DX才会有所纠结。


3

帖子

11

回复

14

积分
最后登录:
2025-03-30 14:10
注册时间:
2023-02-26 14:02
5 楼
  发表于:2025-03-30 16:47:14|查看用户信息

我大学的图形学课程教了我OpenGL入门。

如果改成DirectX入门我估计要挂到天荒地老...

OpenGL上手容易:强大的glut封装了很多诸如创建窗口之类的繁琐工作,而且一开始你根本不需要接触复杂的顶点缓冲之类的复杂概念,挨着调用glVertex(),glColor()之类的函数就可以一个一个的将顶点画上去。反观DX,除了从一开始你就得掌握一些windows编程知识用于基本的创建窗口之外,你还必须掌握顶点缓冲,一次性传输所有顶点进去才可以让DX进行绘制。作为新手,用OpenGL画一个正方体比DX容易太多... 也更容易建立初始的成就感和兴趣...

事实上老师根本没有讲到顶点缓冲以后的知识,毕竟是计算机图形学,不是OpenGL课... 这些都是我后来自学的。不过还好我学了,DX才能入门..

作为一个两边都接触过的码农来回这个帖子,因为太久没碰GL,可能有误,欢迎指出。代码我就不贴了。


6

帖子

2

回复

7

积分
最后登录:
2025-03-30 13:46
注册时间:
2024-07-15 23:26
6 楼
  发表于:2025-03-30 16:47:58|查看用户信息

大多数游戏引擎都是两种api都支持的,虽然从dx9以后,dx已经甩ogl好几条街,但是,只跨平台一条,就能保证ogl不死,而移动设备的崛起,正式宣告ogl的春天

2

帖子

4

回复

5

积分
最后登录:
2025-03-30 15:07
注册时间:
2023-03-12 21:47
7 楼
  发表于:2025-03-30 16:48:30|查看用户信息

DX6 7的时代,directX的杀手应用其实是directdraw,当年因为硬件限制,3D游戏画面太有风格,2D游戏依然占有大量份额,典型的就是暴雪成名作:魔兽2,暗黑1,伪3D的FPS毁灭公爵,雷神之锤等。

共 1/1 页

0

帖子

0

回复

0

积分
最后登录:
1970-01-01 08:00
注册时间:
1970-01-01 08:00
会员必须登录才能发布帖子! 点击登录