4

如果用户不支持我为更快地渲染某些东西而制作的着色器,我需要做一个后备。

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

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

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

4

2 回答 2

5

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

于 2011-05-20T13:42:39.023 回答
1

调用后glLinkProgram,建议检查链接状态,使用:

glGetProgramiv(program, GL_LINK_STATUS, &linkStatus);

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

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

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

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

于 2011-05-22T21:11:39.913 回答