Opengl 为什么imageStore为整数采样器写入的数据解释为浮点?
我让下面的计算着色器从iimage2D读取数据,并根据其颜色值替换数据。这里我面临的问题是,尽管我以整数格式读取数据并以整数格式写回,但写入的数据被解释为0到1之间的浮点值。因此获得了意外的输出 以下是计算着色器:Opengl 为什么imageStore为整数采样器写入的数据解释为浮点?,opengl,glsl,compute-shader,Opengl,Glsl,Compute Shader,我让下面的计算着色器从iimage2D读取数据,并根据其颜色值替换数据。这里我面临的问题是,尽管我以整数格式读取数据并以整数格式写回,但写入的数据被解释为0到1之间的浮点值。因此获得了意外的输出 以下是计算着色器: layout(rgba32i) coherent uniform iimage2D i_image2D; layout (local_size_x = 1, local_size_y = 1) in; void main() { ivec2 idx = ivec2(gl_Glob
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);
}您在哪里确定数据的解释方式?是否有其他未显示的着色器?我认为可能发生的情况是您没有设置内存屏障,而您实际经历的是数据危害的结果。相干限定符不能保证调用顺序的任何东西,而且这个着色器看起来非常依赖于顺序。我没有使用任何其他着色器来访问它,我通过它的输出来确定结果。几何体必须具有红色或绿色的浅色,但它会绘制完整的alpha颜色。我们是否需要像在片段着色器中那样对颜色进行规格化。将整数规格化为浮点值?此着色器不输出任何颜色。这就是为什么我问你,你有一个着色器,在那里你可以根据你加载/存储的图像使用整数纹理来绘制吗?