Pregunta

Más por interés que por otra cosa, pero ¿puedes compilar una aplicación DirectX en Linux?

Obviamente no existe un SDK oficial, pero estaba pensando que podría ser posible con Wine.

¿Presumiblemente Wine tiene una implementación de la interfaz DirectX para poder ejecutar juegos?¿Es posible vincularse contra eso?(editar:Esto se llama vinolib)

De lo contrario, tal vez un compilador cruzado mingw con la aplicación ejecutándose en Wine.

La mitad respondió a mi propia pregunta aquí, pero me preguntaba si alguien había oído hablar de algo así.

¿Fue útil?

Solución

He tenido algo de suerte con esto.He logrado compilar este sencillo ejemplo de Direct3D.

Utilicé Winelib para esto (paquete Wine-Dev en Ubuntu).Gracias a alastair por indicarme Winelib.

Modifiqué ligeramente la fuente para convertir los wchars en caracteres (1 en la línea 52, 2 en la línea 55, eliminando la L antes de los literales de cadena).Puede que haya una forma de solucionar este problema, pero esto lo puso en funcionamiento.

Luego compilé la fuente con lo siguiente:

wineg++ -ld3d9 -ld3dx9 triangle.cpp

Esto genera un binario a.out.exe.so, así como un script a.out para ejecutarlo en Wine.

Otros consejos

Si no se trata de portar sino de crear, realmente debería considerar OpenGL ya que esta API es tan poderosa como DirectX y mucho más fácil de portar a Mac o Linux.

No conozco tus requisitos, así que será mejor que lo menciones.

No puede vincularse con Wine, ya que es esencialmente un interdictor/traductor de llamadas en lugar de un conjunto de bibliotecas a las que puede conectarse.Si Linux es importante, vaya a OpenGL/SDL/OpenAL.

Creo (nunca he probado esto) que puedes compilar binarios de Linux contra Winelib.Funciona como un ejecutable de Linux, pero con las bibliotecas de Windows.

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

vaya al directorio con la fuente y escriba:

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

Si recibe este error:

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

asegúrese de haber nombrado su archivo main.cpp y no main.c.

Actualmente no hay forma de compilar código DirectX para apuntar directamente a Linux.Construiría su aplicación como lo haría normalmente y luego la ejecutaría usando una capa de compatibilidad como Wine/Cedega.

Vino es la única forma de ejecutar DirectX en Linux

Puede compilar aplicaciones Directx en Linux, pero no iniciarlas de inmediato.si usa un compilador cruzado que hace que Windows sea exe y apunte al SDK de Windows y al SDK de DirectX.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top