Linux:使用 OpenGL 4.x

Posted

技术标签:

【中文标题】Linux:使用 OpenGL 4.x【英文标题】:Linux: use OpenGL 4.x 【发布时间】:2013-10-03 17:32:57 【问题描述】:

如何在没有 mesa 的情况下使用 OpenGL?太可怕了 - 支持最大。 OpenGL 3.1. 我阅读了关于使用dlopen 加载 openGL.so 的内容,但是要加载的文件在哪里,以及如何挂起它?

啊,我忘了,语言是C++

【问题讨论】:

Mesa 一点也不可怕——把你对 OpenGL 是什么的完全误解转移到 mesa 上是不具建设性的。你想要什么,硬件加速 GL 4.0?然后使用支持它的现代显卡之一并使用供应商提供的图形驱动程序 - GL 实现是其中的一部分(它在所有系统上都以这种方式工作,与 linux 无关) 【参考方案1】:

只需链接到 libGL.so 即可使用硬件图形驱动程序。

如果您有 NVIDIA 或 AMD 显卡并且您已安装 nvidiafglrx 驱动程序,您将获得您的显卡支持的最高 OpenGL 版本。

如果您改用开源 nouveauradeonintel 或其他图形驱动程序,Mesa 将接管,您将只拥有 Mesa (3.1) 支持的最高版本的 OpenGL,并且您的硬件的驱动程序。它将自动使用它能够使用的所有硬件功能。

您不需要做任何花哨的dlopen 技巧或其他任何事情。

【讨论】:

【参考方案2】:

OpenGL 是一个开放的 API,用于“标准化”对图形管道的访问。图形管道应该在 GPU 中!但这不是必需的! Mesa 3D 是 OpenGL 规范的开源实现,它还包含图形管道的软件实现(是的,基于软件),它应该提供与常规 GPU 图形管道相同的结果(除了速度,当然!)。

如果您有 GPU,则不必使用 MESA!为了尝试OpenGL,我建议你阅读一些OpenGL的基础教程:

http://duriansoftware.com/joe/An-intro-to-modern-OpenGL.-Table-of-Contents.html http://www.opengl-tutorial.org/

dlopen() 用于加载动态库。如果您使用像 GLFW 或 GLUT 这样的助手,则无需关心这些细节。

【讨论】:

感谢您的链接 - 但我如何选择使用视频卡?我的朋友有带 2 个显卡(集成和 nvidia)的笔记本电脑,不使用 optirun 的程序(来自 bumblebee 包)仅支持 OpenGL 3.0/3.1。 支持哪个 OpenGL 版本完全取决于驱动程序(或台面,有点像驱动程序)。所以如果你朋友的 GPU 驱动只做 3.0/3.1,就是这样。对此无能为力(替代驱动程序或更新除外)。 说台面是软件实现并不完全正确。几乎每个开源 GPU 驱动程序都实现为台面后端。至于大黄蜂——我记得,它使用英特尔和新驱动程序——都是台面后端。 dlopen() 不是最适合这种情况 - 应尽可能使用 glXGetProcAddress。而且,具有适当扩展的 3.x(或任何)版本几乎不比 4.x+ 差。 你是对的@keltar...“Mesa 是 OpenGL 规范的开源实现”。我会给出更准确的答案!

以上是关于Linux:使用 OpenGL 4.x的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL 3.0 到 3.2

在 linux 终端上使用 c++ 编译示例 opengl 应用程序

无法使用 QGLWidget (Linux) 获取 OpenGL 3.3 功能

Linux OpenGL 实践篇-3 framebuffer

Linux OpenGL 实践篇-11-shadow

Linux OpenGL 实践篇-1