ign*_*tec 3 opengl directx gpu
据我所知,GPU供应商定义了OS开发人员用于与其特定驱动程序通信的标准接口.所以DirectX和OpenGL只是该接口的包装器.当OS开发人员决定创建新版本的Graphic API时,GPU供应商会扩展他们的界面(新的例程更快,而旧的例程留给兼容性问题),OS开发人员使用这个新的界面部分.
因此,当说厂商对DirectX的支持优于OpenGL时,它是否仅仅意味着GPU供应商主要考虑微软未来的开发DirectX API结构的计划,并根据他们的需求调整该接口的未来发展?或者之前有一些技术原因?
据我所知,GPU供应商定义了OS开发人员用于与其特定驱动程序通信的标准接口.所以DirectX和OpenGL只是该接口的包装器.
不,不是真的.DirectX和OpenGL只是定义API的规范.但规范只不过是一份文件,而不是软件.OpenGL API规范由Khronos控制,DirectX API规范由Microsoft控制.然后,每个操作系统定义一个所谓的ABI(应用程序二进制接口),它指定操作系统支持哪些系统级API(OpenGL和DirectX是系统级API)以及实际实现必须遵守的规则,当在OS上运行时题.
实际的OpenGL或Direct3D实现发生在硬件的驱动程序中(实际上硬件本身也是实现的一部分).
当OS开发人员决定创建新版本的Graphic API时,GPU厂商会扩展他们的界面
实际上它是相反的:大多数图形API规范都是由图形硬件供应商规划的.毕竟它们靠近橡胶撞到路面的地方.就Khronos而言,GPU制造商是Khronos控制组的一部分.在DirectX的情况下,硬件制造商提交草稿并审查Microsoft提出的更改和建议.但最终每个新的API版本都反映了下一代硬件开发能力的共同点.
因此,当说厂商对DirectX的支持优于OpenGL时,它是否仅仅意味着GPU供应商主要考虑微软未来的开发DirectX API结构的计划,并根据他们的需求调整该接口的未来发展?
不,这意味着每个GPU供应商都实现了他自己的OpenGL版本和Direct3D后端,这是所有魔术发生的地方.然而,OpenGL非常重视向后兼容性和易于过渡到更新的功能.Direct3D开发OTOH可以快速缩短与早期版本的联系.这也意味着完整的兼容性配置文件OpenGL实现是非常复杂的野兽.这也是最近版本的OpenGL核心配置文件(过期)在减少对传统功能的支持方面的工作原因; 这种API复杂性的降低对于开发人员来说也是一件非常自由的事情.如果您纯粹为核心配置文件开发,它可以简化很多事情; 例如,在编写插件时,您不再需要担心过多的内部状态.
另一个因素是,对于Direct3D,只有一个着色器编译器,它不是驱动程序基础结构/实现本身的一部分,而是在程序构建时运行.但是,OpenGL实现必须实现自己的GLSL着色器编译器,这会使事情复杂化.恕我直言,缺乏统一的AST或即时着色器代码是OpenGL的主要缺点之一.