我有一个GL 3.3上下文设置,并使用GLSL着色器(仅限顶点和片段)和指令:
#version 330 core
我还在片段着色器中设置了一个统一的sampler2DShadow对象,如下所示:
uniform sampler2DShadow shadowMap
但是当使用以下函数来评估地图时,GLSL会停止工作。奇怪的是,没有编译或链接错误 - 它只是停止工作(即没有绘制对象)。我一评论以下一行:
aVariable = texture(shadowMap, vec3(ShadowCoord.xy, ShadowCoord.z/ShadowCoord.w));
全部开始工作。是否有任何理由发生这种情况,或者它可能是GL驱动程序中的错误?
答案 0 :(得分:0)
感谢@RetoKoradi通过他的调试方法让我走上正轨。最后,这个问题归结为分配给不同采样器类型的相同纹理单元(感谢@CynicismRising)。我通过禁用我分配的任何其他纹理单元并且阴影函数开始工作来确保这是问题。出于某种原因,glUniform1f(...)
中存在一个错误,表示未正确设置纹理单元。