2010-11-12 68 views
3

我已经要求调查移植的10岁的Direct X(v7-9)游戏的OpenGL ES,最初为iPhone移植的DirectX的OpenGL ES(iPhone)

我从来没有进行游戏端口这样之前(并且会雇用某人来做),但我想了解这个过程。

  1. 是否有任何资源/书籍/博客可以帮助我理解过程?
  2. 有没有像Mono这样的项目可以做到这一点?
+0

这些桌面电脑的PC游戏是否需要移植到移动设备?图形密集程度如何,我假设它们是3D,是预期的刷新率30 fps?你在利用DirectX9提供的优势吗? – 2010-11-12 18:02:29

+0

是的,他们是3D桌面游戏,但没什么特别的,他们都是10岁,而且非常简单。 – rjstelling 2010-11-12 18:16:37

回答

6

TBH像这样的移植工作涉及到,但相当容易。

首先您将所有DirectX调用替换为“存根”(即空函数)。你这样做直到你可以让软件编译。一旦编译完成,你就开始实现所有的存根函数。沿途会出现一些陷阱,但值得一试。

如果您需要在iPhone 3GS之前移植并支持手机,则您有更复杂的任务,因为硬件仅支持仅固定功能的GLES 1。您将不得不以某种方式“模拟”这些着色器。在过去的手机平台上,我编写了直接在顶点数据上执行“顶点着色”的汇编代码。像素着色通常更加复杂,但通常可以通过“顶点着色”提供足够的信息来实现这一点。一些图形功能,你可能不得不放弃。

iPhone的后续版本使用GLES 2,因此您可以访问GLSL ... ATI已经编写了Unity3D名声的Aras P扩展了软件,该软件的端口号为HLSL code to GLSL

一旦你完成了所有这些,你将进入优化阶段。你可能会发现你的第一次传球效率不高。这很正常。此时,您可以查看更高级别的代码,并查看如何移动代码并采取不同方式来获得最佳性能。

总结:您的第一步将是在没有DirectX的情况下编译代码。您的下一步将是实际将DirectX调用移植到OpenGL ES调用。最后,您将需要重构剩余的代码以获得最佳性能。 (P.S:我很乐意为你做移植工作,请通过我的个人资料中的linkedin页面与我联系;))。

0

不是一个完整的答案,但在帮助一点点的希望......

我不知道任何事情专门针对OpenGL ES的,但Cadega,苹果酒和VirtualBox的 - 在其他之中 - 提供翻译的DirectX调用OpenGL调用,而OpenGL ES一般来说是OpenGL,其中包含很多很少使用的位和一些较慢和冗余的部分。所以至少应该对这些产品进行调查。至少VirtualBox是开源的。

iPhone 3GS之后的SGX部分具有完全可编程的流水线,使其相当于DirectX 10部件,所以硬件就在那里。旧的MBX是固定的管道,扩展名为dot3,但没有立方体贴图,只有两个纹理单元。它还具有矩阵调色板扩展功能,因此,如果可以接受多个通道,则可以实现良好的动画和相当好的光照。