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