如果用户不支持我为更快地渲染某些东西而制作的着色器,我需要做一个后备。
那么,我该如何检查这些东西呢?我知道某些 GLSL 版本不支持某些着色器功能,但是,这些功能与他们需要的版本的完整列表在哪里?
但问题是,我不知道我需要知道什么才能知道谁可以渲染那个着色器。是否只是检查哪个 GLSL 版本支持哪个功能?或者还有什么要知道的吗?我想100%确定何时切换到后备渲染以及何时使用 GLSL 渲染。
我知道如何检索 GLSL 和 OpenGL 版本字符串。
如果glLinkProgram
设置 GL 错误状态,则着色器与卡不兼容。
调用后glLinkProgram
,建议检查链接状态,使用:
glGetProgramiv(program, GL_LINK_STATUS, &linkStatus);
这将为您提供一个布尔值,指示程序是否正常链接。你也有一个GL_COMPILE_STATUS
可用的。
大多数情况下,这将表明程序是否无法在您的平台上编译或链接。
但请注意,程序可能链接良好但不适合在您的硬件上运行,在这种情况下,GL 渲染将回退到软件渲染,并且速度缓慢。
在这种情况下,如果幸运的话,您会在此链接日志中收到一条消息,但此消息取决于平台。