OpenGL:如何检查用户GFX卡是否可以使用我的着色器渲染

OpenGL: How to check if the user GFX card can render with my shader?

本文关键字:我的 可以使 是否 GFX 何检查 用户 检查 OpenGL      更新时间:2023-10-16

如果用户不支持我为更快地渲染某些内容而制作的着色器,我需要进行回退。

那么,我究竟如何检查这些东西呢?我知道某些 GLSL 版本不支持某些着色器函数,但是,这些功能与它们需要的版本的完整列表在哪里?

但问题是,我不知道我需要知道什么才能知道谁可以渲染该着色器。是否只是检查哪个 GLSL 版本支持哪个功能?还是还有更多要知道的?我想 100% 确定何时切换到回退渲染以及何时使用 GLSL 渲染。

我知道如何检索 GLSL 和 OpenGL 版本字符串。

如果glLinkProgram设置了 GL 错误状态,则着色器与卡不兼容。

调用glLinkProgram后,建议使用以下命令检查链路状态

glGetProgramiv(program, GL_LINK_STATUS, &linkStatus);

这将为您提供一个布尔值,指示程序链接是否正常。您还有可用的GL_COMPILE_STATUS

大多数情况下,这将指示程序是否无法在您的平台上编译或链接。

但是,请注意,程序可能链接良好,但不适合在您的硬件上运行,在这种情况下,GL 渲染将回退到软件渲染上,并且缓慢缓慢。

在这种情况下,如果幸运的话,您将在此链接日志中收到一条消息,但此消息取决于平台。