【问题标题】:Add OpenGL libraries to software package将 OpenGL 库添加到软件包中
【发布时间】:2011-11-23 18:01:03
【问题描述】:

我开发了一个科学代码包(用于碰撞/引力 N 体模拟)。它不需要任何库即可运行。人们可以下载它并简单地输入 make 来编译它。我想让它保持简单。

我添加了 OpenGL 作为实时可视化模拟的选项。它看起来真的很棒。但是,有些人的机器上没有安装 OpenGL/GLUT 库。

让这些用户无需手动安装外部库即可使用我的代码的最简单方法是什么。我有一种感觉,如果我写一个像“请安装 OpenGL/GLUT”这样的句子。在手册中,它会让很多人望而却步。我可以将 freeglut 添加到我的源代码包中吗?这是个好主意,还是您有其他建议?

【问题讨论】:

  • GLUT你可以包含,但是GL库应该由系统提供,你尝试包含所有可能的库会很痛苦。
  • 感谢您的回答。我应该更清楚(嗯,当时我并不清楚),这里唯一的库是 GLUT。

标签: opengl software-distribution freeglut


【解决方案1】:

OpenGL 并不是一个真正的库,尽管有这个名字。我建议将 OpenGL 的 L 阅读为“层”。 OpenGL 是 GPU 驱动程序的一部分。在这种情况下,系统上安装的动态库为驱动程序提供了一个 API,但几乎没有内部功能。因此,与您的程序一起提供 OpenGL“库”是没有意义的。

你只需让它依赖于 opengl32.dll/libGL.so/OpenGLFramework。如果OpenGL的使用是可选的,有可能动态加载API访问库,但是这很混乱。

【讨论】:

    【解决方案2】:

    OpenGL 通常随显卡驱动程序一起提供,因此如果最终用户有正确的驱动程序,他们将已经安装了库。但这取决于他们运行的平台。

    自 Windows 95 以来,Windows 包含开箱即用的 OpenGL 实现。我相信它是一种软件回退(尽管较新的可能是 DirectX 包装器),它是一个相当旧的 OpenGL 版本 (1.1),因为它早于他们自己的主宰尝试通过 Direct3D 进入市场。当然,大多数较新的功能在软件中都不能很好地工作,因为它们就像着色器一样需要专门的硬件。这实际上取决于您的程序的图形密集程度。

    Mac OS 从 OS9 开始有官方支持或 OpenGL(各种 OpenGL 版本取决于 OS 版本),OSX 10.7 有 OpenGL 3.2 但似乎 1.1->2.1 可能取决于硬件/OSX 版本。

    大多数现代桌面 Linux 实现都会有一些 OpenGL 支持,可能通过专有的官方 ATI/nVidia/Intel 驱动程序。还有一些开源驱动程序,例如 Nouveau 。不幸的是,也有许多平台的实现被破坏,没有免费软件实现(一些发行版/最终用户拒绝使用封闭组件),或者没有加速。例如,英特尔 GMA500 芯片组目前已严重损坏。

    如果您仍想包含后备,请尝试查看 Mesa。它是一个开源的跨平台软件渲染 OpenGL 实现。您可能可以将其包括在内。它支持 OpenGL 版本 2.1,并且它们正在 3.0+ 上工作,并且一些扩展已经可用。着色器之类的东西会很慢(有一个名为 LLVMpipe 的项目可能会提供改进,但它是相当有经验的,而且只能做这么多)。

    还有ANGLE 项目,它是一个 OpenGL ES 2.0 DirectX 9.0 包装器。我相信它来自谷歌,目的是在 Windows 上支持 Chrome/Chromium 的 WebGL。但它当然是 OpenGL ES 现在是完整的 OpenGL,只会在 Windows 上为您提供帮助。

    最好的选择是禁用 OpenGL 模拟选项,除非它们安装了库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-06
      • 1970-01-01
      • 1970-01-01
      • 2016-09-30
      相关资源
      最近更新 更多