Opengl GLSL纹理(…)函数失败

Opengl GLSL纹理(…)函数失败,opengl,glsl,Opengl,Glsl,我有一个GL 3.3上下文设置,仅在指令中使用GLSL着色器顶点和片段: #version 330 core 我还在片段着色器中设置了一个统一的sampler2DShadow对象,如下所示: uniform sampler2DShadow shadowMap 但是,当使用以下函数计算映射时,GLSL stop将起作用。奇怪的是没有编译或链接错误——它只是停止工作,即没有绘制对象。我一评论以下行: aVariable = texture(shadowMap, vec3(ShadowCoord.

我有一个GL 3.3上下文设置,仅在指令中使用GLSL着色器顶点和片段:

#version 330 core
我还在片段着色器中设置了一个统一的sampler2DShadow对象,如下所示:

uniform sampler2DShadow shadowMap
但是,当使用以下函数计算映射时,GLSL stop将起作用。奇怪的是没有编译或链接错误——它只是停止工作,即没有绘制对象。我一评论以下行:

aVariable = texture(shadowMap, vec3(ShadowCoord.xy, ShadowCoord.z/ShadowCoord.w));

一切都开始起作用了。有什么原因会发生这种情况,或者它可能是GL驱动程序中的一个错误吗?

感谢@RetoKoradi用他的调试方法让我走上了正确的轨道。最后,这个问题归结为同一个纹理单元被分配给不同的采样器类型,这要归功于@犬儒主义。我通过禁用我分配的任何其他纹理单元来确保这是一个问题,阴影函数开始工作。由于某种原因,glUniform1f中有一个bug。。。这意味着没有正确设置纹理单位。

Hmm,到目前为止,您粘贴的线条看起来像一条没有效果的语句。也许你混淆了一些错误的编译器。但很难说。你是否有正确的统一设置,以便它引用2D纹理和GL_纹理_比较_模式集来启用比较?@RetoKoradi我有这个设置。它是深度纹理?当您准备好进行draw调用时,我还会尝试glValidateProgram调用,看看它是否指出了任何问题。谢谢@RetoKoradi,我在draw调用后尝试了验证,现在我发现错误验证失败了!-片段着色器中相同采样纹理单元的不同采样器类型-我已确保相同纹理单元不用于其他纹理。