漫射光的立方体总是黑色

时间:2015-08-10 16:17:28

标签: opengl lwjgl

我有一个简单的Opengl-Application,如下所示: enter image description here

正如你所看到的,我有一个带有纹理的飞机和suzanne,还有一些光。但是还有一个立方体。你只能看到上半部分,但问题是立方体保持黑色,无论如何。我尝试应用纹理 - >黑色。我试图给立方体一个颜色---->仍然是黑色。

in vec3 surfaceNormal;
in vec3 toLightVector;
smooth in vec2 textureCords;


out vec4 outputColor;


uniform sampler2D s;
uniform int hasTexture;
uniform vec3 LightColor;


void main()
{
   vec3 unitNormal = normalize(surfaceNormal);
   vec3 unitLightVector = normalize(toLightVector);
   float ndot = dot(unitNormal,unitLightVector);
   float brightness = max(ndot,0.0);
   vec3 diffuse = brightness*LightColor*1.5;
    if(hasTexture == 1){

        **outputColor =  vec4(diffuse,1.0) * texture(s,textureCords);**
    }else{

        **outputColor = vec4(diffuse,1.0) *vec4(0.4,0.5,0.7,1.0);**
    }
}

这是我的片段着色器。我将这个着色器传递给一个统一的hasTexture来检查是否应该使用纹理或不使用纹理进行渲染。 例如:

cube.draw("texture.png");

cube.draw();

由于我使用的这个方法适用于其他两个模型,我真的不知道它的问题是什么。纹理协调可能是错误的吗?

1 个答案:

答案 0 :(得分:1)

基于给定的信息,我的猜测是亮度为0,因为ndot为0或负数。我会说检查你的法线和你的光线传感器。即使您的纹理坐标错误,将立方体设置为颜色也应该有效。