Domanda

Più curiosità che altro, ma si può compilare un DirectX app sotto linux?

Ovviamente non c'è nessun SDK ufficiale, ma stavo pensando che potrebbe essere possibile con il vino.

Presumibilmente il vino ha un'implementazione delle DirectX interfaccia per l'esecuzione di giochi?È possibile collegare i contro?(edit:Questo è chiamato winelib)

In mancanza di questo, forse un cross-compilatore mingw con l'applicazione in esecuzione in vino.

Metà risposto alla mia domanda qui, ma chiedevo se qualcuno aveva sentito nulla di simile fatto?

È stato utile?

Soluzione

Ho avuto un po ' di fortuna con questo.Sono riuscito a compilare questo semplice esempio Direct3D.

Ho usato winelib per questo (vino pacchetto-dev su Ubuntu).Grazie a alastair per indicarmi winelib.

Ho modificato il sorgente leggermente per convertire il wchars di caratteri (1 in linea 52, 2 sulla linea 55, rimuovendo la L prima i valori letterali stringa).Ci può essere un modo per aggirare questo, ma questo ha ottenuto fino e in esecuzione.

Poi ho compilato i sorgenti con il seguente:

wineg++ -ld3d9 -ld3dx9 triangle.cpp

Questo genera un.out.exe.in modo binario, così come un.fuori script per eseguire in vino.

Altri suggerimenti

Se non si tratta di porting, ma la creazione, si dovrebbe davvero prendere in considerazione di OpenGL come questa API è potente come DirectX e molto più facile da port per Mac o Linux.

Non so I vostri requisiti, quindi è meglio parlare di esso.

Non è possibile linkare vino è essenzialmente una chiamata interdictor/traduttore piuttosto che un insieme di librerie che si può hook.Se linux è importante andare OpenGL, SDL/OpenAL.

Credo(non ho mai provato questo) si può compilare Linux binarys contro winelib.Così funziona proprio come un eseguibile per Linux, ma con le librerie di windows.

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

passare alla directory con il tipo e l'origine in:

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

Se si ottiene questo Errore:

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

assicurarsi di aver chiamato il tuo file main.cpp e non principale.c.

Attualmente non c'è un modo per compilare DirectX codice direttamente con target Linux.Vuoi costruire la tua applicazione come si farebbe normalmente, quindi eseguire utilizzando un layer di compatibilità, come Wine/Cedega.

Vino è l'unico modo per eseguire DirectX in Linux

è possibile compilare una directx applicazioni in linux, ma non lanciare subito.se si utilizza un crosscompilator che rende exe di windows e scegliere il sdk di windows e directx sdk.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top