比其他任何東西都更令人感興趣,但是你可以在Linux下編譯DirectX應用嗎?是否可以在Linux中開發DirectX應用程序?
顯然沒有官方的SDK,但我認爲這可能與葡萄酒。
據推測,葡萄酒有執行DirectX界面以運行遊戲?有沒有可能與此相關聯? (編輯:這被稱爲winelib)
如果失敗了,也許一個mingw交叉編譯器與應用程序運行在酒下。
一半在這裏回答我自己的問題,但想知道是否有人聽說過這樣的事情?
比其他任何東西都更令人感興趣,但是你可以在Linux下編譯DirectX應用嗎?是否可以在Linux中開發DirectX應用程序?
顯然沒有官方的SDK,但我認爲這可能與葡萄酒。
據推測,葡萄酒有執行DirectX界面以運行遊戲?有沒有可能與此相關聯? (編輯:這被稱爲winelib)
如果失敗了,也許一個mingw交叉編譯器與應用程序運行在酒下。
一半在這裏回答我自己的問題,但想知道是否有人聽說過這樣的事情?
我有一些運氣與此有關。我已經設法編譯this simple Direct3D example。
我用winelib(Ubuntu上的wine-dev包)。感謝alastair將我指向winelib。
我稍微修改了源以將wchar轉換爲字符(第52行中的第1行,第55行中的第2行,通過在字符串文字前刪除L)。這可能有一種解決方法,但是這樣做起來並且正在運行。
我然後編譯源有以下:
wineg++ -ld3d9 -ld3dx9 triangle.cpp
這產生a.out.exe.so二進制文件,以及一個a.out腳本酒下運行它。
目前沒有辦法編譯DirectX代碼來直接指向Linux。您可以像平常一樣構建應用程序,然後使用像Wine/Cedega這樣的兼容層來運行它。
如果這不是關於移植而是創建,你應該真的考慮OpenGL,因爲這個API和DirectX一樣強大,並且更容易移植到Mac或Linux。
我不知道你的要求,所以更好地提到它。
Wine是在Linux
運行DirectX您無法對葡萄酒的鏈接,因爲它本質上是一個呼叫攔截艦/翻譯,而不是一組你可以掛接到庫的唯一途徑。如果linux非常重要,請使用OpenGL/SDL/OpenAL。
你可以在linux下編譯directx應用程序,但不能馬上啓動它。 如果您使用交叉編譯器,使Windows exe和指向Windows SDK和DirectX SDK。
我相信(我從來沒有試過這個),你可以編譯Linux binarys對winelib。所以它就像一個Linux可執行文件,但與Windows庫。
進入目錄與源並鍵入:
winemaker --lower-uppercase -icomdlg32 -ishell32 -ishlwapi -iuser32 -igdi32 -iadvapi32 -ld3d9 .
make
wine yourexecutable.exe.so
如果您收到此錯誤:
main.c:95:5: error: ‘struct IDirect3D9’ has no member named ‘CreateDevice’
確保您已經命名自己的文件main.cpp中,而不是main.c中。
是的,當我問這個問題時,這就是我想到的。我會進一步調查。 – Nick 2008-09-15 23:21:58