2008-09-07 13 views
12

Mehr Interesse als alles andere, aber können Sie eine DirectX-Anwendung unter Linux kompilieren?Ist es möglich, DirectX-Anwendungen in Linux zu entwickeln?

Offensichtlich gibt es kein offizielles SDK, aber ich dachte, dass es mit Wein möglich ist.

Vermutlich hat Wein eine Implementierung der DirectX-Schnittstelle, um Spiele zu starten? Ist es möglich, dagegen zu verlinken? (edit: Das nennt sich winelib)

Gelingt das nicht, vielleicht ein mingw cross compiler mit der app läuft unter wine.

Halb beantwortete meine eigene Frage hier, aber fragte sich, ob irgendjemand von so etwas wie getan gehört hatte?

Antwort

10

Ich habe etwas Glück mit diesem hat. Ich habe es geschafft, this simple Direct3D example zu kompilieren.

Ich habe Winelib für diese (Wein-Entwickler-Paket auf Ubuntu). Danke an alastair für den Verweis auf winelib.

Ich habe die Quelle leicht modifiziert, um die wchars in Zeichen umzuwandeln (1 in Zeile 52, 2 in Zeile 55, indem das L vor den Zeichenfolgenliteralen entfernt wurde). Es mag einen Weg geben, aber das hat es in Gang gesetzt.

ich dann die Quelle mit dem folgenden zusammengestellt:

wineg++ -ld3d9 -ld3dx9 triangle.cpp 

Dies erzeugt einen a.out.exe.so binär, sowie einen a.out Skript unter Wein zu laufen.

0

Es gibt derzeit keine Möglichkeit, DirectX-Code für die direkte Ausrichtung auf Linux zu kompilieren. Sie würden Ihre Anwendung wie gewohnt erstellen und dann mit einer Kompatibilitätsebene wie Wine/Cedega ausführen.

4

Wenn es nicht um Portierung sondern um Erstellung geht, sollten Sie OpenGL in Betracht ziehen, da diese API genauso leistungsfähig ist wie DirectX und viel einfacher auf Mac oder Linux portiert werden kann.

Ich kenne Ihre Anforderungen nicht, also besser, es zu erwähnen.

0

Wine ist das die einzige Möglichkeit, DirectX in Linux

2

Sie können nicht gegen Wein Link zu laufen, wie es ist im Wesentlichen ein Anruf Interdictor/Übersetzer, statt eine Reihe von Bibliotheken, die Sie in einhaken können. Wenn Linux wichtig ist, gehen Sie OpenGL/SDL/OpenAL.

0

Sie können eine DirectX-Anwendungen in Linux kompilieren, aber nicht sofort starten. Wenn Sie einen Crosscompilator verwenden, der Windows exe macht und auf die Windows SDK und DirectX SDK zeigt.

2

Ich glaube (ich habe das noch nie versucht) Sie können Linux Binarys gegen Winelib kompilieren. Es funktioniert also genauso wie eine ausführbare Linux-Datei, aber mit den Windows-Bibliotheken.

http://www.winehq.org/site/docs/winelib-guide/index

+0

Ja, daran dachte ich, als ich die Frage stellte. Ich werde weiter untersuchen. – Nick

1

mit der Quelle in das Verzeichnis und geben Sie in:

winemaker --lower-uppercase -icomdlg32 -ishell32 -ishlwapi -iuser32 -igdi32 -iadvapi32 -ld3d9 . 
make 
wine yourexecutable.exe.so 

Wenn Sie diese Fehlermeldung erhalten:

main.c:95:5: error: ‘struct IDirect3D9’ has no member named ‘CreateDevice’ 

stellen Sie sicher, Sie haben Ihre Datei main.cpp und nicht main.c benannt .