我的声明声明如下:
glTexImage2D(GL_TEXTURE_2D, 0,GL_RGBA16F, win.width, win.height, 0,GL_RGBA, GL_FLOAT, 0);
我想在颜色通道中转储z-buffer值, 我使用以下片段着色器执行此操作:
#version 330
precision highp float;
layout(location = 0) out vec4 color_out;
void main()
{
float z = gl_FragCoord.z;
color_out = vec4(z,z,z, 0);
}
不幸的是,我在使用glreadpixel读取的Z缓冲区值和我被转储到纹理颜色通道中的Z缓冲区值之间存在很高的精度损失,任何想法为什么?
这是我期望的值:
depth value 0.996680 : at pixel 274300
depth value 0.996690 : at pixel 274301
depth value 0.996701 : at pixel 274302
depth value 0.996712 : at pixel 274303
depth value 0.996722 : at pixel 274304
depth value 0.996733 : at pixel 274305
depth value 0.996743 : at pixel 274306
这是我得到的:
color 0.996078 : at pixel 274300
color 0.996078 : at pixel 274301
color 0.996078 : at pixel 274302
color 0.996078 : at pixel 274303
color 0.996078 : at pixel 274304
color 0.996078 : at pixel 274305
color 0.996078 : at pixel 274306