致命错误使用Image api重新编译着色器

时间:2012-06-20 17:42:56

标签: opengl glsl opengl-4

我收到了错误

fatal error C9999: *** exception during compilation ***

每当我尝试重新编译使用Image api进行纹理写入的GLSL着色器时,例如

layout(binding = 0) coherent uniform image3D Voxels;

然而,初始编译工作正常。还有其他人遇到过这种情况吗?有解决方法吗?

1 个答案:

答案 0 :(得分:2)

好的,我想出了一个解决方法。从本质上讲,我不得不让我的重新编译过程更具破坏性。

首先,(现在)需要从着色器程序中分离所有着色器(vert,frag,geom等)。

其次,在重新编译单个着色器时,(现在)需要删除并重新创建新的着色器ID

glDeleteShader(shader_id);
shader_id = glCreateShader(GL_FRAGMENT_SHADER);

然后您可以重新加载着色器源,之后您可以安全地重新附加,或者更确切地将新着色器附加到着色器程序,重新链接所有内容,并希望它一切正常。