Подтвердить что ты не робот

Можно ли разрабатывать приложения DirectX в Linux?

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

wineg++ -ld3d9 -ld3dx9 triangle.cpp

Это генерирует двоичный файл a.out.exe.so, а также a.out script, чтобы запустить его под вином.

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

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

Ответ 5

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

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.

Ответ 6

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

Ответ 7

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

Ответ 8

вы можете скомпилировать приложения directx в Linux, но не запускать их сразу. если вы используете кросс-компилятор, который делает окна exe и указывает на окна sdk и directx sdk.