
CAD
早期的许多3D
CAD软件采用了固定的渲染管线以及基于OpenGL立即模式的设计(即通过glBegin等API调用来实现渲染)。而DirectX自Direct3D 8起就已经转向了可编程渲染管线,这两种编程模型之间存在显著差异,无法进行渐进式的迁移。简单来说,这些
CAD软件只需要一个能够绘制3D内容的基础画布,并不关心如何通过VBO(顶点缓冲对象)管理显存中的数据。即使让CPU负责处理顶点数据也并非不可行,只需将显卡作为硬件光栅化器使用即可。由于Direct3D 9在Windows Vista之前主要是为游戏开发设计的(2D渲染则依赖GDI驱动),因此大多数
CAD软件仍然倾向于选择OpenGL作为其图形接口。从OpenGL 3.x版本开始,引入了Core Profile与Compatibility Profile的概念。其中,Core Profile仅支持可编程渲染管线(新式API),而Compatibility Profile则允许继续使用一些旧版API。仔细观察这些3D
CAD软件的技术要求可以发现,它们对OpenGL的版本需求往往非常低,这表明这些软件普遍运行在Compatibility Profile模式下,根本无法利用现代DirectX所提供的高级功能。通常情况下,不同图形API之间的功能是可以相互映射的。例如,OpenGL 2.x大致相当于DirectX 9,OpenGL 3.x对应DirectX 10,而OpenGL 4.x则对应DirectX 11。然而,大部分
CAD软件仅仅需要OpenGL 3.x级别的支持,这意味着它们对应的DirectX 10技术已经是2006年的老旧标准。显然,这些软件并未涉及高版本API所特有的功能,比如OpenGL 4.x中必需的曲面细分技术。像
NVIDIA推出的创作驱动程序,部分就是为了支持那些依赖Compatibility Profile的OpenGL应用程序。GPU驱动程序可以在内部将旧版API调用翻译成适应现代API的代码,从而在CPU上完成相关处理。但正是由于这些软件依赖于Compatibility Profile,导致它们无法兼容Angle等将OpenGL ES转译到DirectX的中间层工具。