GLSL 向量乘法 returns 错误?模型未渲染

GLSL Vector multiplication returns error? Model is not rendered

我一直在尝试研究 opengl 来进行一个有趣的副项目,并且 运行 在学习的同时解决了一些问题。

下面是片段着色器:

#version 330 core
in vec3 Normal;
in vec3 Position;
in vec2 TexCoords;
out vec4 color;

uniform vec3 cameraPos;
uniform samplerCube skybox;

struct Material{
    sampler2D diffuse0;
    sampler2D specular0;
    sampler2D emitter0;
    sampler2D reflection0;
    float shininess;
};
uniform Material material;


void main(){

    vec3 I = normalize(Position - cameraPos);
    vec3 R = reflect(I, normalize(Normal));

    float intensity = 0;
    intensity += texture(material.reflection0, TexCoords).x;

    vec4 rfl = texture(skybox, R);

    //this line doesnt produce anything
    color = rfl * intensity;

}

当我使用上面的代码时,我的模型完全从视图中消失了。

但是,如果我单独调试它,比如更改线路

    color = rfl * intensity;

    color = rfl;

这实际上渲染了 returns 下面的图片

并将该行更改为

   color = vec4(intensity);

渲染并returns如下图

我试过改变

   color = rfl * some constant
   //or
   color = vec4(0.5) * intensity

而且都正常渲染了我的模型。当我尝试将 rfl 和强度相乘时,我很困惑为什么它不呈现。我认为这可能是因为有些值乘法失败,但我不知道它们可能是什么。

那你换

color = rfl * intensity;

color = rfl;

GLSL 编译器将删除

uniform Material material;

由于优化。当您将行更改为:

时,天空盒也会发生同样的情况
color = intensity;

确保您绑定的纹理制服是正确的。