OpenGL + Mesa 3D + MinGW

Pet*_*ike 12 opengl mingw

I程序上(Ubuntu的)Linux的C++应用程序并将其编译成2个操作系统:本地到Linux的通过使用"G ++"(GNU C++编译器)和它们交叉编译到视窗通过使用"I386-的mingw32-G ++"(MinGW的C++横-compiler).

现在,我正在尝试交叉编译"OpenGL"应用程序(从Linux到Windows) - 因为我需要一些OpenGL库文件.
作为OpenGL的一个实现,我使用"Mesa 3D"开源库.幸运的是,Ubuntu为Linux提供了"预编译"的mesa3d库(libgl1-mesa-devlibglu1-mesa-dev),但不幸的是,没有任何预编译库可用于MinGW交叉编译器(因此它们的Windows版本) - 所以我"必须"从源头手动编译它们(可以从http://www.mesa3d.org主页下载).

但我不知道这样做.内mesa3d源代码,还有一些文件如何构建库对于某些特定的平台-特别是有"README.MINGW32"自述文件.
但只是在第一行有一些命令

mingw32-make -f Makefile.mgw [OPTIONS...]
Run Code Online (Sandbox Code Playgroud)

我无法运行,因为我没有安装任何"mingw32-make"程序.通过其他软件,我曾经用"经典"来构建它们

./configure -> make -> make install
Run Code Online (Sandbox Code Playgroud)

过程,但这不适用于mesa3d库.
例如,我也尝试过

./configure --host=i386-mingw32
Run Code Online (Sandbox Code Playgroud)

它已配置好,但在打字后

make
Run Code Online (Sandbox Code Playgroud)

它引发了一些错误

error: #error No PIPE_SUBSYSTEM_WINDOWS_xxx subsystem defined.
Run Code Online (Sandbox Code Playgroud)

现在我很失落:-(.

那么有谁知道如何构建mesa3d库以便与mingw32一起使用它们?

PS:当然,我不想使用Microsoft Visual Studio ,而不是更多:-).而且我还想做所有必要的事情来从Linux构建OpenGL环境并使用mingw32进行交叉编译.我希望有可能.

PS2:http://www.mesa3d.org/systems.html页面上写道,使用MinGW和Mesa 3D是"弃用".我正是以正确的方式使用它吗?

Iva*_*ica 16

没有必要为MinGW编译Mesa3D.MinGW包括GL库; 它只是不叫libGL.a也不是libGLU.a; 该库改为调用libopengl32.alibglu32.a.遗憾的是,这就是微软决定在Visual Studio上的Windows下调用它们,因此MinGW的Windows和GNU/Linux版本都决定包含如上所述的库.

因此,在为Windows进行交叉编译时,只需更改:

-lGL -lGLU
Run Code Online (Sandbox Code Playgroud)

-lopengl32 -lglu32
Run Code Online (Sandbox Code Playgroud)

GNU/Linux上的Mesa3D实际上是OpenGL 的libre实现的名称.这是因为OpenGL是商标,SGI的政策不允许任何人使用该名称而无需支付大笔金额.尽管如此,SGI还是为作者Brian Paul提供了测试套件的副本.

Mesa3D在大多数平台上都具有原生OpenGL实现,称为软件"健全性检查"库,模拟了许多仅限高端硬件的功能.但是在GNU/Linux上,更重要的是称为DRI或直接渲染界面.这是真正的交易,硬件加速等等.该库也称为Mesa3D; 事实上,DRI的配置是Mesa3D以及X11和内核的一部分.

Mesa3D 在GNU/Linux和其他免费平台上提供与libre OpenGL兼容的头文件.

简介: Mesa3D是OpenGL的GNU/Linux实现的名称,因为该名称是商标.该库包含一个出色,功能强大,正确且相对快速的软件实现.它还包括用于硬件加速的直接渲染界面.

  • @rubenvb当你明白我的意思时,为什么要挑剔? (2认同)