我有一个关于图形程序员的问题。
我困惑于一些游戏(比如《Crysis》)如何支持DirectX 9(在XP中)和10(在Vista中)?
据我目前了解,如果你编写一个DX10应用程序,那么它只能在Vista中运行。
也许他们有两个代码基础——一个是用DX9编写的,另一个是用DX10编写的?但这难道不会过度杀伤吗?
我有一个关于图形程序员的问题。
我困惑于一些游戏(比如《Crysis》)如何支持DirectX 9(在XP中)和10(在Vista中)?
据我目前了解,如果你编写一个DX10应用程序,那么它只能在Vista中运行。
也许他们有两个代码基础——一个是用DX9编写的,另一个是用DX10编写的?但这难道不会过度杀伤吗?
他们有两个渲染管道,一个使用DX9调用,另一个使用DX10调用。这些API不兼容,尽管大多数游戏引擎的部分可以重复使用。如果您想要一些开源示例来了解如何完成不同的渲染管道,请查看类似于Ogre3d的东西,它支持OpenGL、DX9和(即将推出的)DX10渲染。
他们很可能拥有一个抽象层,并针对该层进行开发。在运行时,他们会实例化DX9或DX10封装具体引擎。
我想象他们的抽象层非常靠近DirectX层,并且仅在DX10上运行时为DX9提供明智的手动实现DX10函数或增强DX9逻辑。