Linux で DirectX アプリを開発することはできますか?
質問
何よりも興味深いのですが、Linux 上で DirectX アプリをコンパイルできますか?
もちろん公式の SDK はありませんが、wine なら可能かもしれないと考えていました。
おそらく、Wine にはゲームを実行するために DirectX インターフェイスが実装されているのでしょうか?それに対してリンクすることは可能でしょうか?(編集:これはワインリブと呼ばれます)
それができない場合は、Wine でアプリを実行する mingw クロス コンパイラを使用することをお勧めします。
半分はここで私自身の質問に答えましたが、誰かがこのようなことが行われていることを聞いたことがありますか?
解決
これに関してはある程度の幸運がありました。なんとかコンパイルできました この単純な Direct3D の例.
これには winelib を使用しました (Ubuntu の wine-dev パッケージ)。おかげで アラステア winelib を教えてくれて。
wchar を char に変換するためにソースを少し変更しました (52 行目で 1、55 行目で 2、文字列リテラルの前の L を削除)。これを回避する方法があるかもしれませんが、これで起動して実行できました。
次に、次のようにソースをコンパイルしました。
wineg++ -ld3d9 -ld3dx9 triangle.cpp
これにより、a.out.exe.so バイナリと、それを wine で実行するための a.out スクリプトが生成されます。
他のヒント
これが移植ではなく作成である場合、OpenGL は DirectX と同じくらい強力で、Mac や Linux への移植がはるかに簡単であるため、OpenGL を検討する必要があります。
あなたの要件がわからないので、それについて言及した方がよいでしょう。
wine は本質的に呼び出しインターディクター/トランスレーターであり、接続できるライブラリのセットではないため、ワインに対してリンクすることはできません。Linux が重要な場合は、OpenGL/SDL/OpenAL を使用してください。
Linux バイナリを 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.c ではなく main.cpp という名前を付けていることを確認してください。
現在、Linux を直接ターゲットにするように DirectX コードをコンパイルする方法はありません。通常どおりにアプリケーションを構築し、Wine/Cedega などの互換性レイヤーを使用して実行します。
ワイン Linux で DirectX を実行する唯一の方法です
Linux で directx アプリをコンパイルすることはできますが、すぐには起動できません。Windows exe を作成し、Windows SDK と DirectX SDK をポイントするクロスコンパイレーターを使用している場合。