我正在试图弄清楚我的显卡和驱动程序当前支持哪个版本的OpenGL。
This answer建议运行glxinfo | grep OpenGL
如果正常,但这里有(某些)输出:
OpenGL vendor string: NVIDIA Corporation
OpenGL core profile version string: 4.5.0 NVIDIA 387.22
OpenGL version string: 4.6.0 NVIDIA 387.22
所以很难说,是4.5还是4.6?
答案 0 :(得分:4)
OpenGL version string: 4.6.0 NVIDIA 387.22
这是实现支持的最高 legacy 版本。这里有几种可能性:
nvidia专有驱动程序属于第2类。
对于核心配置文件,根本没有办法询问实现它可以支持什么,如中所述 this answer:
OpenGL core profile version string: 4.5.0 NVIDIA 387.22
glxinfo输出不意味着你的驱动程序不能做4.6核心。 (它实际上可以)。这只是意味着glxinfo现在不知道GL 4.6的存在,只检查最多4.5。
The source code for glxinfo 将揭示以下逻辑:
if (coreProfile) {
/* Try to create a core profile, starting with the newest version of
* GL that we're aware of. If we don't specify the version
*/
int i;
for (i = 0; gl_versions[i].major > 0; i++) {
/* don't bother below GL 3.0 */
if (gl_versions[i].major == 3 &&
gl_versions[i].minor == 0)
return 0;
ctx = create_context_flags(dpy, config,
gl_versions[i].major,
gl_versions[i].minor,
0x0,
GLX_CONTEXT_CORE_PROFILE_BIT_ARB,
direct);
if (ctx)
return ctx;
}
/* couldn't get core profile context */
return 0;
}
所以它只是迭代数组gl_versions
并检查是否可以创建具有该版本的上下文。
2017年10月11日,OpenGL 4.6被添加到该阵列in this commit:
diff --git a/src/xdemos/glinfo_common.h b/src/xdemos/glinfo_common.h
index 0024f85..4d07f66 100644
--- a/src/xdemos/glinfo_common.h
+++ b/src/xdemos/glinfo_common.h
@@ -86,6 +86,7 @@ struct options
/** list of known OpenGL versions */
static const struct { int major, minor; } gl_versions[] = {
+ {4, 6},
{4, 5},
{4, 4},
{4, 3},
因此,如果您使用在10月11日之前在源代码版本上编译的glxinfo
(这意味着现在基本上每个发行版本),即使您的驱动程序可以执行此操作,它也不会显示4.6。
所以很难说,是4.5还是4.6?
兼容性和核心配置文件均为4.6。但我只知道,因为我知道那个司机。