Можно ли разрабатывать приложения DirectX в Linux? - PullRequest
12 голосов
/ 07 сентября 2008

Больше интереса, чем что-либо еще, но вы можете скомпилировать приложение DirectX под Linux?

Очевидно, что официального SDK нет, но я думал, что это возможно с вином.

Предположительно, у Wine есть реализация интерфейса DirectX для запуска игр? Можно ли связать это? (редактировать: это называется winelib)

В противном случае, возможно, кросс-компилятор Mingw с приложением, работающим под Wine.

Половина ответила на мой вопрос здесь, но спросила себя, слышал ли кто-нибудь о чем-то подобном?

Ответы [ 8 ]

10 голосов
/ 16 сентября 2008

Мне повезло с этим. Мне удалось скомпилировать этот простой пример Direct3D .

Я использовал winelib для этого (пакет wine-dev в Ubuntu). Спасибо alastair за указание мне на winelib.

Я немного изменил источник, чтобы преобразовать символы wchars в символы (1 в строке 52, 2 в строке 55, удалив букву L перед строковыми литералами). Может быть способ обойти это, но это заставило его работать.

Затем я скомпилировал исходный код со следующим:

wineg++ -ld3d9 -ld3dx9 triangle.cpp

Создает двоичный файл a.out.exe.so, а также скрипт a.out для его запуска под Wine.

4 голосов
/ 07 сентября 2008

Если речь идет не о портировании, а о создании, вам следует рассмотреть OpenGL, так как этот API такой же мощный, как DirectX, и намного проще портировать на Mac или Linux.

Я не знаю ваших требований, поэтому лучше упомяните об этом.

2 голосов
/ 16 сентября 2008

Полагаю (я никогда не пробовал этого), вы можете скомпилировать бинарные файлы Linux для winelib. Так что он работает так же, как исполняемый файл Linux, но с библиотеками Windows.

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

2 голосов
/ 07 сентября 2008

Вы не можете ссылаться на Wine, так как это, по сути, запрет / переводчик вызовов, а не набор библиотек, в которые вы можете зацепиться. Если Linux важен, перейдите в OpenGL / SDL / OpenAL.

1 голос
/ 23 марта 2013

перейдите в каталог с источником и введите:

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.

0 голосов
/ 07 сентября 2008

вы можете скомпилировать приложения для DirectX в Linux, но не сразу запустив его. если вы используете кросс-компилятор, который делает Windows EXE и указывают на Windows SDK и DirectX SDK.

0 голосов
/ 07 сентября 2008

Wine - единственный способ запустить DirectX в Linux

0 голосов
/ 07 сентября 2008

В настоящее время нет способа скомпилировать код DirectX для прямой ориентации на Linux. Вы должны построить свое приложение, как обычно, а затем запустить его, используя слой совместимости, например Wine / Cedega.

...