我有完全的填充深度紋理,但似乎沒有得到它應有的價值。我怎樣才能從深度紋理深度值?
GLSL代碼片段着色器:
uniform sampler2D depth_tex;
uniform float viewport_w;
uniform float viewport_h;
void main()
{
vec2 coord = vec2(gl_FragCoord.xy);
float depth = texture2D(depth_tex, vec2(coord.x/viewport_w, coord.y/viewport.h)).r;
float c = material_amb * depth; // material_amb is preset by host
out_color = vec4(c, c, c, 1.0f);
}
我希望模特的顏色會由頂點的深度可以改變,但我不能看到的一切。當然,我可以看到模型沒有倍增深度。深度紋理的類型是GL_DEPTH_COMPONENT,GL_FLOAT。有什麼問題?我認爲一個解決方案來獲得深度值從紋理是錯的,但我不知道原因。深度值在哪裏存儲?我怎樣才能獲得深度值?
一個有用的提示來調試這種東西:而不是直接乘以'深度',乘以'fract(depth)',這樣你就可以計算出這些值是否超出'[0..1] '開始的範圍。 – UncleZeiv
順便說一下,你的代碼中還有一個錯字,'viewport.h'應該是'viewport_h' ...也許着色器在你使用'depth'時不會編譯? – UncleZeiv