5

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

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

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

4

2 回答 2

2

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

您只需使其依赖于 opengl32.dll/libGL.so/OpenGLFramework。如果 OpenGL 的使用是可选的,则有可能动态加载 API 访问库,但这很麻烦。

于 2011-09-23T18:21:09.407 回答
1

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

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

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 模拟选项,除非它们安装了库。

于 2011-09-24T04:18:18.183 回答