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

OpenGL + Mesa 3D + MinGW

Я программирую приложения на С++ (Ubuntu) Linux и компилирую их в 2 операционных системах: изначально в Linux с помощью "g++" (компилятор GNU С++) и перекрестно скомпилировать их в Windows с помощью "i386-mingw32-g++" ( MinGW С++).

Теперь я пытаюсь перекрестно скомпилировать приложения OpenGL (от Linux до Windows) - для этого мне нужны некоторые файлы библиотеки OpenGL.
В качестве реализации OpenGL я использую библиотеку с открытым исходным кодом "Mesa 3D". К счастью, Ubuntu предлагает "предварительно скомпилированные" библиотеки mesa3d (libgl1-mesa-dev и libglu1-mesa-dev) для Linux, но, к сожалению, нет никаких предварительно скомпилированных библиотек для использования с кросс-компилятором MinGW (таким образом, с их версиями Windows) - так Я "ДОЛЖЕН" вручную скомпилировать их "из источника" (который можно загрузить с http://www.mesa3d.org homepage.)

Но я не собираюсь этого делать. В исходном коде mesa3d есть некоторые документы о том, как создавать библиотеки для некоторых конкретных платформ - в частности, есть файл Readme README.MINGW32.
Но только на первых строках есть некоторая команда

mingw32-make -f Makefile.mgw [OPTIONS...]

который я не могу запустить, потому что у меня нет установленной программы "mingw32-make". Другими программными средствами я использовал их для создания "классического"

./configure -> make -> make install

но это не работает с библиотеками mesa3d.
Например, я также попробовал

./configure --host=i386-mingw32

и он был настроен нормально, но после ввода

make

он выбросил некоторую ошибку

error: #error No PIPE_SUBSYSTEM_WINDOWS_xxx subsystem defined.

и теперь я ПОТЕРЯЛ:-(.

Знает ли кто-нибудь, как создавать библиотеки mesa3d для их использования с помощью mingw32?

P.S.: И, конечно, Я НЕ ХОЧУ использовать Microsoft Visual Studio НИКОГДА НЕ БОЛЕЕ:-). Кроме того, я хотел бы сделать все необходимое для создания среды OpenGL из Linux и использования mingw32 для кросс-компиляции. Надеюсь, это возможно.

P.S.2: На странице http://www.mesa3d.org/systems.html написано, что использование MinGW с Mesa 3D "устарело". Я на правильном пути, чтобы использовать его именно так?

4b9b3361

Ответ 1

Нет необходимости компилировать Mesa3D для MinGW. MinGW включает библиотеку GL; он просто не называется libGL.a и libGLU.a; Вместо этого библиотеки называются libopengl32.a и libglu32.a. К сожалению, именно это Microsoft решила назвать их под Windows на Visual Studio, поэтому выпуск Windows и GNU/Linux MinGW решил включить библиотеки, названные выше.

Итак, когда кросс-компиляция для Windows просто измените:

-lGL -lGLU

в

-lopengl32 -lglu32

Mesa3D на GNU/Linux на самом деле является именем для реализации libre OpenGL. Это связано с тем, что OpenGL является товарным знаком, а политика SGI не позволяет кому-либо использовать это имя, не заплатив огромную сумму денег. Несмотря на это, SGI предоставила автору Брайану Полю копию тестового пакета.

Mesa3D находится на большинстве платформ с собственной реализацией OpenGL, известной как библиотека "проверка работоспособности" программного обеспечения, с эмуляцией многочисленных функций, относящихся исключительно к аппаратным средствам. Но в GNU/Linux гораздо важнее то, что называется DRI или прямым интерфейсом рендеринга. Это реальная сделка, аппаратное ускорение и все. Эта библиотека также называется Mesa3D; на самом деле, предоставление DRI является частью Mesa3D, а также X11 и ядра.

Mesa3D предоставляет libre OpenGL-совместимые заголовки на GNU/Linux и других бесплатных платформах.

Резюме: Mesa3D - это имя для реализации OpenGL GNU/Linux, поскольку это имя является товарным знаком. Эта библиотека включает отличную, функциональную, правильную и относительно быструю реализацию программного обеспечения. Он также включает в себя прямой интерфейс рендеринга для аппаратного ускорения.