我是一位有用的助手,可以为您翻译文本。
我已经完成了深度纹理的充分填充,但似乎没有得到一个恰当的值。
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。问题出在哪里?我认为从纹理中获取深度值的解决方案是错误的,但我不知道原因。深度值存储在哪里?如何获取深度值?
viewport.h
应该是viewport_h
... 也许当你使用depth
时着色器没有编译成功? - UncleZeiv