将DirectX代码转换为OpenGL的工具/资源

将DirectX代码转换为OpenGL的工具/资源,opengl,directx,Opengl,Directx,是否有任何工具和/或文档提供从DirectX到OpenGL的映射?如果您必须进行转换,您将如何进行转换?您将使用什么 我知道ATI Technologies提供HLSL2GLSL,但我的理解是,这只是针对着色器语言,而不是API的全部内容。概念非常相似,但DirectX和OpenGL之间的API非常不同。自动转换不会很简单 就个人而言,如果我有一个项目,并试图从一个解决方案转换到另一个,我实际上会尝试转换到一个同时支持这两种方案的渲染库,例如,或一个商业引擎。通过这种方式,您可以在一个代码库中同

是否有任何工具和/或文档提供从DirectX到OpenGL的映射?如果您必须进行转换,您将如何进行转换?您将使用什么


我知道ATI Technologies提供HLSL2GLSL,但我的理解是,这只是针对着色器语言,而不是API的全部内容。

概念非常相似,但DirectX和OpenGL之间的API非常不同。自动转换不会很简单


就个人而言,如果我有一个项目,并试图从一个解决方案转换到另一个,我实际上会尝试转换到一个同时支持这两种方案的渲染库,例如,或一个商业引擎。通过这种方式,您可以在一个代码库中同时支持DX和OpenGL。

很久以前,在游戏中使用了专有的OpenGL到DirectX包装器,它与单个DLL公开(子)OpenGL命令集一样简单


另一方面,用OpenGL伪造DirectX(Direct3D)可能要困难得多,因为您必须支持整个COM。因此,我猜您必须复制所需的接口,然后才编写实际的包装器。

源应用程序实际上使用Allegro,它在Windows上使用DirectX,在其他平台上使用我不确定是什么,但显然不是OpenGL。我把Allegro的源代码改成了“opengl”,但没有点击,这就是为什么我这么说的原因。Allegro可能会在下一个非Windows版本中使用OpenGL,但我认为目前不会。如果有,我会被设置。如果你使用Allegro,你可以为OpenGL添加AllegroGL支持:如果你移动到最新版本(4.9+),它支持OpenGL开箱即用。我还想知道葡萄酒。它需要将DirectX调用转换为OpenGL才能在Mac上运行吗?如果是这样的话,我想我可以通过研究它是如何做到这一点来学到一些东西。我认为是的,WINE将DirectX转换为OpenGL,否则我无法想象游戏如何在它下工作。