我有以下计算着色器从iimage2D读取数据并根据其颜色值替换数据。我面临的问题是,虽然我以整数格式读取数据并以整数形式回写,但写入的数据被解释为0到1之间的浮点值。因此得到意外的输出。
以下是Compute着色器:
layout(rgba32i) coherent uniform iimage2D i_image2D;
layout (local_size_x = 1, local_size_y = 1) in;
void main()
{
ivec2 idx = ivec2(gl_GlobalInvocationID.xy);
ivec4 readTexel = imageLoad(i_image2D, idx);
if(readTexel[0] == 0 && readTexel[1] == 2147483647 && readTexel[2] == 0 && readTexel[3] == 2147483647)
{
readTexel = ivec4(2147483647,0,0,2147483647);
}
else
{
readTexel = ivec4(0,2147483647,0,2147483647);
}
imageStore(i_image2D, idx, readTexel);
}