着色器编译失败后,是否可以调用glShaderSource来更新着色器源代码



我目前正在编写一个Shader类,并且很好奇以下在opengl中的用例是否有效。

假设您将源代码(SourceCode)添加到着色器(由句柄指定):

void glShaderSource(handle, 1, sourceCode, nullptr);

然后尝试编译着色器,但它失败了。

更新sourceCode,如上所述再次调用glShaderSource并重新编译,这是一个有效的和/或经过良好测试的用例吗?

当然,您可以在一个着色器失败后编译其他着色器。

测试良好的用例

我确信它经过了测试,但没有人这样做。在启动程序之前修复着色器,而不是在启动程序之后。