1
我一直在努力学习opengl一个有趣的一面项目,并在学习时遇到了一些问题。GLSL矢量乘法返回错误?模型没有渲染
下面是一个片段着色器:
#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;
这实际上呈现并返回下面的图片
并改变线路到
color = vec4(intensity);
它呈现并返回下面的图片
我试图改变
color = rfl * some constant
//or
color = vec4(0.5) * intensity
而且两者呈现我的模型正常。当我试图将rfl和强度放在一起时,我为什么不渲染它。我认为这可能是因为存在乘法失败的价值,但我不知道它们可能是什么。
'color = rfl * vec4(intensity)'有效吗? –
编辑:我误读你的评论,并且rfl * vec4(强度)不起作用 – Xyten
如何color = vec4(rfl *强度)和color = vec4(vec3(rfl *强度),1.0)? – stonexjr