我有完全的填充深度纹理,但似乎没有得到它应有的价值。我怎样才能从深度纹理深度值?
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