Можно ли разрабатывать приложения DirectX в Linux?
Больше из интереса, чем что-либо еще, но можете ли вы скомпилировать приложение DirectX под Linux?
Очевидно, нет официального SDK, но я думал, что это возможно с вином.
Предположительно вино имеет реализацию интерфейса DirectX для запуска игр? Можно ли связать это? (edit: Это называется winelib)
В противном случае, возможно, кросс-компилятор с приложением, работающим под вином.
Половина ответила на мой собственный вопрос здесь, но задавалась вопросом, слышал ли кто-нибудь о чем-то подобном?
Ответы
Ответ 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.