为什么imageStore为整数采样器写入的数据被解释为Float?

时间:2013-12-30 14:51:49

标签: opengl glsl compute-shader

我有以下计算着色器从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);

}

0 个答案:

没有答案