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

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

查看:0|回复:6

【行业】为什么3d cad软件普遍使用OpenGL而不用DirectX?

 attach_img

3

帖子

6

回复

8

积分
最后登录:
2025-03-29 21:33
注册时间:
2024-10-11 22:10
楼主
  发表于:2025-03-29 22:01:49|查看用户信息

OpenGL相对于DirectX有什么特别的优势吗?

为什么Catia,NX,SolidWorks这些主流CAD软件通通都选择了OpenGL而不是DirectX呢?显卡厂商还搞出了所谓的专业显卡,专门提供更好的OpenGL支持,但实际上专业显卡在玩游戏的时候性能并不比游戏卡高,价格却高好几倍,相同价位的游戏卡游戏性能远远超过专业显卡,是不是说明专业卡的硬件性能实际上并不比游戏卡强,只是游戏卡的驱动被阉割了故意降低OpenGL性能。

4

帖子

8

回复

11

积分
最后登录:
2025-03-29 20:14
注册时间:
2023-02-26 14:02
1 楼
  发表于:2025-03-29 22:04:14|查看用户信息

早期有很多3D CAD软件用的是固定渲染管线,以及OpenGL立即模式(就是那一堆glBegin开始的API调用)

而DirectX从Direct3D 8开始就使用可编程渲染管线了,两种编程模型相差还是很多的,没有办法逐步迁移。

直白的说,这些软件只需要一个3D版本的canvas,而不想关心怎么用VBO管理显存里的对象,让CPU管理顶点也不是不行,显卡当一个硬件光栅化器使用。

由于Direct3D 9在Windows Visita之前是微软专为游戏开发的(2D渲染走GDI驱动),因此这些CAD软件普遍继续使用OpenGL。

自从OpenGL 3.x开始,就有Core Profile和Compatibility Profile。Core Profile只支持可编程渲染管线(新API),而Compatibility Profile可以使用一些较老的API。

仔细查看这些3D软件的要求,OpenGL的版本要求都非常低,根本无法对应新的DirectX功能,这是因为这些CAD软件都在使用Compatibility Profile。

通常显卡的功能可以在不同的API之间影射,比如OpenGL 2.x对应DX9,OpenGL 3.x对应DX10,OpenGL 4.x对应DX11x。

而大部分CAD都只要求OpenGL 3.x,对应的DX10都是2006年的老文物了,显然这些软件根本用不到高版本API的功能,比如OpenGL 4.x必需的曲面细分。

像Nvidia的创作驱动,一部分就是为这些Compatibility Profile的OpenGL程序提供支持,GPU驱动可以在CPU上把旧的API调用翻译为适应现代API的代码。

也是由于Compatibility Profile的原因,这些软件也无法使用Angle这些转译OpenGL ES到Direct3D的转译层。


5

帖子

5

回复

8

积分
最后登录:
2025-03-29 20:56
注册时间:
2024-07-18 20:15
2 楼
  发表于:2025-03-29 22:06:37|查看用户信息

图形学教材一定会告诉你,上个世纪70年代(60年代?)图形学开始了标准化,其成果就是PHIGS。

就像有OpenGL,就一定有GLX一样,有PHIGS就有PEX。

在小型机时代,出现了UNIX,派生出了RISC/UNIX图形工作站这样一台价值十万美元的机器。

RISC/UNIX图形工作站,运行X Window System,提供Motif库,运行CDE桌面环境,通过PEX接口,调用PHIGS库,实现三维CAD应用。

Motif有一个竞争对手叫OPEN LOOK。两者之间的竞争史堪比今天的gtk与Qt。

后来SGI在自家的图形工作站上,开发出了IrisGL。IrisGL标准化后,称为OpenGL,并成立了OpenGL ARB作为标准管理组织。

后来出现了IBM PC。

后来出现了Microsoft Windows。

后来OpenGL在Windows NT和Winfows 9x上得到支持。

出现了voodoo卡。

出现TNT2和Geforce 256,DirectX成熟。

OpenGL长期停滞在v1.4版本。

出现Geforce.3以及Geforce 5 FX,像素着色器和顶点着色器,DirectX战胜OpenGL,外媒称,the war is over.


OpenGL交给khronos管理。

DX7:硬件T&L。完整固定功能渲染管线。

DX8:像素着色器。汇编级渲染语言。

DX9:顶点着色器。C语言级高级渲染语言。

DX10:几何着色器。通用运算单元。

DX11:曲线曲面三个着色阶段。

DX12:低级渲染API。


3

帖子

6

回复

8

积分
最后登录:
2025-03-29 21:44
注册时间:
2024-07-11 15:29
3 楼
  发表于:2025-03-29 22:08:28|查看用户信息

最主要的原因主要就是PC这边连图形界面都还没有的稀烂年代,这些软件们的祖辈版本大多是跑在SGI的机器上的, 一脉相承,从IRIX GL到OPEN GL,这时候还没有WIN,更不要说DX了,这个惯性强大到现在,SGI弱势之后还有不少专业软件跑在X86/LINUX上,继续让这个惯性续了好些年。


上古神话咱就不说了,说个身边的近期的例子:国内GLD(上市公司)早年也搞过三维部门,无奈基因不太吻合没啥成果,后来为了洗脱自己是做预决算的这个恶名而标榜是做BIM的,收购了国外软件M***CAD, 想把产品线深度融合的时候发现头大了,毕竟自己这边做一些图形工具都是近些年的事了,大部分基于DX, 但是M某CAD是基于OSG(也就是OPEN GL的)


当然严格的说现在不管是DX还是VULKAN 还是OPEN GL 都可以转接,性能损失也很小


4

帖子

7

回复

11

积分
最后登录:
2025-03-29 18:17
注册时间:
2023-11-10 17:16
4 楼
  发表于:2025-03-29 22:09:37|查看用户信息

这些大型的CAD/CAE软件,早期都是运行在基于unix/linux操作系统的大型机上的,后来基于windows的个人电脑性能来越强,才开始移植到windows平台。

Opengl从设计之初就是跨平台的,dx是windows平台下的,现在好像也开始支持跨平台了(性能如何不清楚),但是这是近些年的事情。

基于跨平台的考虑,一般都选择Opengl。


1

帖子

5

回复

6

积分
最后登录:
2025-03-29 18:01
注册时间:
2024-07-07 15:22
5 楼
  发表于:2025-03-29 22:10:39|查看用户信息

cad的图形需求和游戏图形是完全不一样的,游戏行业复杂现代的图形api在cad里完全用不上

游戏图形追求更好的光影,更快的实时渲染,模型都是多边形,面数越多越好

cad的图形都是千奇百怪的线框,模型是几何表达,多边形转化由tesselation完成,cpu也能做,光影效果有个ssao就很好了

目前还没有游戏是用实体几何建模,主打线框性能的吧


3

帖子

4

回复

7

积分
最后登录:
2025-03-29 18:07
注册时间:
2023-03-12 17:23
6 楼
  发表于:2025-03-29 22:11:25|查看用户信息

某些很古老的3d CAD软件用的是OpenGL,因为那是DX还不行,为了保持和老代码的兼容性而已。

现在新点的3d cad 用的都是DX加速了,游戏卡和专业卡没区别。


共 1/1 页

0

帖子

0

回复

0

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