OpenGL + Mesa 3D + MinGW

2024-03-23

我在 (Ubuntu) Linux 上编写 C++ 应用程序并将它们编译到 2 个操作系统:本机到Linux通过使用“g++”(GNU C++编译器)并将它们交叉编译为Windows通过使用“i386-mingw32-g++”(MinGW C++ 交叉编译器)。

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

但我不知道这样做。在 mesa3d 源代码中,有一些文档如何为某些特定平台构建库 - 特别是“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 :-) 。我还想做所有必要的事情来从 Linux 构建 OpenGL 环境并使用 mingw32 进行交叉编译。我希望这是可能的。

P.S.2: On http://www.mesa3d.org/systems.html http://www.mesa3d.org/systems.html页面上写道,将 MinGW 与 Mesa 3D 一起使用已“已弃用”。我这样使用它的方法正确吗?


不需要为 MinGW 编译 Mesa3D。 MinGW包含GL库;它只是没有被调用libGL.a nor libGLU.a;这些库被称为libopengl32.a and libglu32.a。遗憾的是,这就是 Microsoft 决定在 Visual Studio 上的 Windows 下对它们的称呼,因此 MinGW 的 Windows 和 GNU/Linux 版本都决定包含上述命名的库。

因此,在 Windows 上交叉编译时,只需更改:

-lGL -lGLU

into

-lopengl32 -lglu32

GNU/Linux 上的 Mesa3D 实际上是一个libreOpenGL 的实现。这是因为OpenGL是一个商标,而SGI的政策不允许任何人在不支付大笔费用的情况下使用该名称。尽管如此,SGI 还是向作者 Brian Paul 提供了测试套件的副本。

Mesa3D 在大多数平台上都具有本地 OpenGL 实现,称为软件“健全性检查”库,可模拟许多高端硬件功能。但在 GNU/Linux 上,更重要的是称为 DRI 或直接渲染接口的东西。这才是真正的东西,硬件加速等等。该库也称为 Mesa3D;事实上,DRI 的配置是 Mesa3D 以及 X11 和内核的一部分。

Mesa3D 提供libreGNU/Linux 和其他自由平台上的 OpenGL 兼容标头。

Summary:Mesa3D 是 OpenGL 的 GNU/Linux 实现的名称,因为该名称已注册。该库包含一个优秀的、功能齐全的、正确的且相对快速的软件实现。它还包括用于硬件加速的直接渲染接口。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenGL + Mesa 3D + MinGW 的相关文章

  • 退出 glutFullScreen()

    我不明白为什么当我按 f 时它进入全屏但不退出全屏 在这个方法的开头我已经设置了bool fullscreen false 这是我的切换代码 case f toggle screenmode if fullscreen glutFullSc
  • 纹理openGl。 C++、qt

    我试图用草纹理覆盖我的地形 由高度图制成 但它没有按预期工作 我什至无法在简单的 GL QUAD 上获取纹理 结果是多色网络 void GLWidget initializeGL glEnable GL TEXTURE 2D 在 QGLwi
  • 如何用opengl制作2D地形?

    我想制作一个简单的二维地形 只有一些颠簸和高度变化 我想过只使用随机数来描述某个顶点的高度 但我不知道如何从中制作一个网格 我正在寻找一种方法来查找地形的顶点和索引缓冲区 我该怎么做呢 您可以仅将 GL POLYGON 与所有顶点的列表一起
  • CPU 到 GPU 法线映射

    我正在创建一个地形网格 然后这个答案 https stackoverflow com a 5284527 1356106我正在尝试将 CPU 计算法线迁移到基于着色器的版本 以便通过降低网格分辨率并使用在片段着色器中计算的法线贴图来提高性能
  • 在 OpenGL 中,为什么 glVertexAttribPointer 要求“指针”参数以 void* 形式传入?

    规格为glVertexAttribPointer如下 void glVertexAttribPointer GLuint index GLint size GLenum type GLboolean normalized GLsizei s
  • 三角形未在 OSX 上的 OpenGL 2.1 中绘制

    我正在学习有关使用 OpenGL 在 Java 中创建游戏引擎的教程 我正在尝试在屏幕上渲染一个三角形 一切运行良好 我可以更改背景颜色 但三角形不会显示 我还尝试运行作为教程系列的一部分提供的代码 但它仍然不起作用 教程链接 http b
  • QOpenGLFunctions 缺少重要的 OpenGL 函数

    QOpenGLFunctions 似乎缺少重要的函数 例如 glInvalidateFramebuffer 和 glMapBuffer 据我了解 QOpenGLFunctions 加载桌面 OpenGL 函数和 ES 函数的交集 如果是这样
  • 另一个 MinGW“gcc:错误:CreateProcess:没有这样的文件或目录”

    我已经通过 GUI 安装程序在 Windows 8 64 位 中安装了 MinGW C 编译器 但是当我尝试编译 C 程序时 gcc 说 gcc CreateProcess 没有这样的文件或目录 这是一个常见的错误 我已经尝试了我找到的所有
  • 致命错误:iostream:没有这样的文件或目录#include

    我在学习C 的时候遇到了一个问题 编译的时候遇到了错误 The details are as follows You seem to have not installed C support in MinGW If you are usin
  • 使用 glDrawElements 时在 OpenGL 核心配置文件中选取三角形

    我正在使用 glDrawElements 绘制三角形网格 并且希望能够使用鼠标单击来拾取 选择三角形 三角形的网格可以很大 在固定功能 OpenGL 中 可以使用 GL SELECT http content gpwiki org inde
  • 为什么我的 FPS 相机一劳永逸地滚动?

    如果我忽略四元数代数的肮脏细节 我想我理解了旋转和平移变换背后的数学 但仍然不明白我做错了什么 为什么我的相机一劳永逸地滚动 更具体地说 我应该如何从相机的方向 旋转矩阵 计算相机视图矩阵 我正在用 Python 编写一个简约的 3d 引擎
  • glBlitFramebuffer 渲染缓冲区和渲染全屏纹理哪个更快?

    哪个更快更高效 使用 OpenGL 纹理作为 CUDA 表面并在四边形上渲染 新样式 使用渲染缓冲区作为 CUDA 表面并使用 glBlitFramebuffer 进行渲染 None
  • 当 OpenGL 中同时绑定 1D 和 2D 纹理时,正确的行为是什么?

    假设你有这样的东西 glBindTexture GL TEXTURE 2D my2dTex glBindTexture GL TEXTURE 1D my1dTex glBegin 正确的 OpenGL 行为是什么 要绘制一维纹理 二维纹理还
  • 将四元数旋转转换为旋转矩阵?

    基本上 给定一个四元数 qx qy qz qw 我如何将其转换为OpenGL旋转矩阵 我也对哪个矩阵行是 向上 向右 向前 等感兴趣 我有一个四元数的相机旋转 我需要在向量中 以下代码基于四元数 qw qx qy qz 其中顺序基于 Boo
  • 将带有 glut 的点击坐标添加到向量链接列表中

    我想创建一个向量链接列表 并在 GLUT 库的帮助下获取点击的位置并将它们附加到链接列表中 这些是我写的结构 typedef struct vector int x int y Vector typedef struct VectorLis
  • GL_CULL_FACE使所有对象消失

    我正在尝试在 openGL3 3 中创建一些简单的多边形 我有两种类型的对象 具有以下属性 对象 1 10 个顶点 按顺序在下面列出 存储在GL ARRAY BUFFER并使用GL TRIANGLE FAN v x y z w v 0 0
  • 更改 Qt OpenGL 窗口示例以使用 OpenGL 3.3

    我正在尝试更改 Qt OpenGL 示例以使用更现代的 opengl 版本 330 似乎合适 所以我做了 在 main cpp 上设置版本和配置文件 设置着色器版本 更改着色器以使用统一 它现在构建没有任何错误 但我只看到一个空白窗口 我错
  • Glew+GLFW Win32 无依赖项 Visual Studio

    是否可以在不将文件复制到 C 的情况下构建并链接 Glew 和 GLFW 我找不到任何说明如何在不将 DLL 复制到 C 上的 Visual Studio 目录的情况下使用这些库的文档 我只想包含项目目录中所需的所有 dll 和 lib 文
  • 三角形纹理映射OpenGL

    我正在开发一个使用 Marching Cubes 算法并将数据更改为 3D 模型的项目 现在我想在 OpenGL 中为我的 3D 模型使用纹理映射 我首先尝试了一个简单的示例 它将图片映射到三角形上 这是我的代码 int DrawGLSce
  • 如何使用边缘和内部镶嵌因子完成三角形面片镶嵌?

    I am just learning tessellation and i came across with below example for triangle patch tessellation but i am not sure h

随机推荐