我开发了一套科学的代码包(用于碰撞/重力N体仿真)。它不需要运行任何库。人们可以下载它,只需输入make来编译它。我想保持这么简单。
我添加了OpenGL作为实时可视化模拟的选项。它看起来真的很棒。但是,有些人的计算机上没有安装OpenGL / GLUT库。
允许这些用户使用我的代码而不必手动安装外部库的最简单方法是什么。我觉得如果我写一个像“请安装OpenGL / GLUT”这样的句子。在手册中,它会推迟很多人。我可以将freeglut添加到我的源包中吗?这是个好主意,还是有其他建议?
答案 0 :(得分:2)
尽管有名字,但OpenGL并不是真正的图书馆。我建议将OpenGL的 L 读作“Layer”。 OpenGL是GPU驱动程序的一部分。在这种情况下,系统上安装的动态库为驱动程序提供API,但旁边没有内部功能。因此,使用您的程序运送OpenGL“库”毫无意义。
你只需要依赖于opengl32.dll / libGL.so / OpenGLFramework。如果使用OpenGL是可选的,则可以动态加载API访问库,但这非常麻烦。
答案 1 :(得分:1)
OpenGL通常附带显卡驱动程序,因此如果最终用户拥有正确安装了libs的驱动程序。但这取决于他们运行的平台。
自Windows 95以来,Windows包含一个开箱即用的OpenGL实现。我相信它是一个软件rending回退(虽然更新的可能是DirectX包装器)而且它是一个相当古老的OpenGL版本(1.1),因为它早于他们自己的主导尝试通过Direct3D进入市场。当然,大多数较新的功能在软件中效果不佳,因为它们是需要专用硬件的着色器之类的东西。这将取决于你的程序图形密集程度。Mac OS自OS9以来有官方支持或OpenGL(各种OpenGL版本取决于操作系统版本),OSX 10.7具有OpenGL 3.2但似乎1.1-> 2.1可能取决于硬件/ OSX版本。)
大多数现代桌面Linux实施都可以通过专有的官方ATI / nVidia / Intel驱动程序获得一些OpenGL支持。还有像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模拟选项,除非他们安装了lib。