我已經要求調查移植的10歲的Direct X(v7-9)遊戲的OpenGL ES,最初爲iPhone移植的DirectX的OpenGL ES(iPhone)
我從來沒有進行遊戲端口這樣之前(並且會僱用某人來做),但我想了解這個過程。
- 是否有任何資源/書籍/博客可以幫助我理解過程?
- 有沒有像Mono這樣的項目可以做到這一點?
我已經要求調查移植的10歲的Direct X(v7-9)遊戲的OpenGL ES,最初爲iPhone移植的DirectX的OpenGL ES(iPhone)
我從來沒有進行遊戲端口這樣之前(並且會僱用某人來做),但我想了解這個過程。
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頁面與我聯繫;))。
不是一個完整的答案,但在幫助一點點的希望......
我不知道任何事情專門針對OpenGL ES的,但Cadega,蘋果酒和VirtualBox的 - 在其他之中 - 提供翻譯的DirectX調用OpenGL調用,而OpenGL ES一般來說是OpenGL,其中包含很多很少使用的位和一些較慢和冗餘的部分。所以至少應該對這些產品進行調查。至少VirtualBox是開源的。
iPhone 3GS之後的SGX部分具有完全可編程的流水線,使其相當於DirectX 10部件,所以硬件就在那裏。舊的MBX是固定的管道,擴展名爲dot3,但沒有立方體貼圖,只有兩個紋理單元。它還具有矩陣調色板擴展功能,因此,如果可以接受多個通道,則可以實現良好的動畫和相當好的光照。
這些桌面電腦的PC遊戲是否需要移植到移動設備?圖形密集程度如何,我假設它們是3D,是預期的刷新率30 fps?你在利用DirectX9提供的優勢嗎? – 2010-11-12 18:02:29
是的,他們是3D桌面遊戲,但沒什麼特別的,他們都是10歲,而且非常簡單。 – rjstelling 2010-11-12 18:16:37