我正在使用 GLSL 着色器来比较纹理。在我的算法步骤之一中,我想总结像素值(使用着色器)或计算它们的平均值,然后将其读入 CPU。它可能看起来像(着色器在 1x1 测试上运行,仅针对 R 通道进行计算,纹理 2 大小为 1x500):
uniform sampler2D texture2;
void main()
{
float sumR = 0.0;
float step = 1.f / 500.f;
for(int i = 0; i<500; i++)
{
vec2 pos = gl_TexCoord[0].st;
sumR += (texture2D(texture2, vec2(pos.x, i * step))).r;
}
gl_FragColor.r = sumR;
}
我的问题是:如何将这么大的数字存储在一个 32 位的像素中(一个通道只有 8 位)?或者如何以像素为单位以高精度存储和读取浮点数?