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