在上下文初始化之前查询支持的最高 OpenGL 版本?
Query highest supported OpenGL version before context initialization?
我想知道是否有办法(理想情况下是跨平台,但如果不是只兼容POSIX或至少在Linux中)来查询当前系统中支持的最高OpenGL版本。
我希望能够将 GLFW 窗口实例化为支持的最高版本,而不是盲目尝试不同的版本,直到允许有效的上下文初始化。
编辑:
假设我没有创建上下文。想象一下,我想复制glxinfo的功能。换句话说,我希望能够在不创建上下文的情况下查询已安装的OpenGL版本。
当你要求版本X.Y时,你不是在要求版本X.Y;你要求至少是版本X.Y.允许实现给你与X.Y向后兼容的最高版本。
因此,如果您要求 3.3 核心配置文件,您很可能会获得 4.6 核心配置文件。实现返回较低版本是没有意义的。
因此,只需针对最低OpenGL版本编写代码,然后要求。你会得到实现给你的任何内容,你可以查询你以后得到什么。
想象一下,我想复制glxinfo的功能。
glxinfo
通过创建上下文来执行它所做的事情。看看它的源代码就知道了。
但是,GLX_MESA_query_renderer
扩展确实允许询问将为特定显示/屏幕/渲染器组合创建的上下文。当然,这只能通过MESA工作;不通过MESA系统的驱动程序将无法通过此系统。
您是否尝试在不查询特定版本的情况下创建 OpenGL 上下文?
当我使用本机OpenGL函数(glxCreateContext()或wglCreateContext())来创建新的OpenGL上下文时,它们总是创建一个具有我的显卡(4.6)支持的最高OpenGL版本的上下文。
我不知道GLFW是否有相同的行为...
问题编辑答案: 创建上下文时无法查询任何OpenGL信息,因为您无法调用创建上下文glXXX()
函数中的任何一个。相反,您可以创建一个虚拟上下文(不向用户显示,而是保留在内存中的某个位置)来查询所需的所有OpenGL信息,并在完成后将其删除(不用担心,许多软件,库和游戏引擎都这样做,甚至是我自己的)
- 在上下文初始化之前查询支持的最高 OpenGL 版本?
- 从版本字符串中提取 OpenGL 版本
- OpenGL 版本不等于支持的着色器版本
- CEGUI:无法获取桌面 OpenGL 版本
- 使用 C# 获取 OpenGL 版本的最简单方法
- Mac上的OpenGL版本
- 使用 SDL2 指定 OpenGL 版本
- 使用 OpenGL 版本 3+ 呈现文本/UI
- 为什么我不能在这个虚假的OpenGL上下文中检查OpenGL版本
- OS X 上的 OpenGL 版本支持
- 如何设置 OpenGL 版本
- 无法在 QGLWidget 中设置所需的 OpenGL 版本
- OpenGL 版本在 ContextAttribs() 值更改时更改
- OpenGL 版本未打印
- OpenGL 版本在使用 ifstream 时太低
- OpenGL 版本问题
- OpenGL版本和编程
- 在openGL(版本>3.3)的屏幕上显示纹理时如何更改纹理的大小?
- OpenGL版本(截至2014年底)
- 如何检查OpenGL版本一致性