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

时间:2011-05-20 13:35:14

标签: c++ opengl glsl shader fallback

如果用户不支持我更快地呈现某些内容的着色器,我需要做一个后备。

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

但问题是,我不知道究竟需要知道什么才能知道谁可以呈现该着色器。它只是关于检查哪个GLSL版本支持哪个功能?还是有更多要知道的东西?我希望 100%确定何时切换到后备渲染以及何时使用GLSL渲染。

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

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

致电glLinkProgram后,建议您使用以下方式检查链接状态

glGetProgramiv(program, GL_LINK_STATUS, &linkStatus);

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

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

但请注意,程序可能链接正常,但不适合在硬件上运行,在这种情况下,GL渲染将回退到软件渲染,并且速度缓慢慢。 / p>

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