c++ - 在上下文初始化之前查询支持的最高 OpenGL 版本?

标签 c++ linux opengl glfw

我想知道是否有一种方法(最好是跨平台,但如果不仅仅是 POSIX 兼容或至少在 Linux 中)来查询当前系统中支持的最高 OpenGL 版本。

我希望能够将 GLFW 窗口实例化为支持的最高版本,而不是盲目地尝试不同的版本,直到一个允许有效的上下文初始化。

编辑:

假设我没有创建上下文。想象一下,我想复制 glxinfo 所做的事情。换句话说,我希望能够在不创建上下文的情况下查询已安装的 OpenGL 版本。

最佳答案

当您请求 X.Y 版本时,您并不是在请求 X.Y 版本;您要求至少 X.Y 版本。允许实现为您提供与 X.Y 向后兼容的最高版本。

因此,如果您要求 3.3 核心配置文件,您很可能会获得 4.6 核心配置文件。返回较低版本的实现没有意义。

因此,只需针对最低 OpenGL 版本编写代码,然后提出要求。您将获得实现为您提供的任何内容,并且您可以查询稍后获得的内容。


Imagine I want to replicate what glxinfo does.

glxinfo 通过创建上下文 来完成它的工作。就look at its source code .

然而,GLX_MESA_query_renderer extension确实允许询问将为特定显示/屏幕/渲染器组合创建的上下文。当然,这只能通过 MESA 进行;不通过 MESA 系统的驱动程序将不会通过此可见。

关于c++ - 在上下文初始化之前查询支持的最高 OpenGL 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49862263/

相关文章:

c++ - OpenGL 中多边形的渐变

c++ - 如何重载作为参数传递给 C++ 模板类的基类方法?

c++ - 三参数函数模板混淆示例

c++ - Eclipse 字符集类似于 Visual C++

linux - 根据操作系统运行 Node.js

C# 结合 GDI+ 和 OpenGL/DirectX

c++ - 缺少用户定义的构造函数是否违反了非默认可构造结构的标准?

django - 设置mod_wsgi、django python版本

linux - 在 Linux 上使用 PSFTP

c++ - OpenGL 中顶点数组缓冲区绘制的每个函数有什么作用?