使用image_load_store写入单个颜色通道

时间:2014-08-13 08:57:20

标签: opengl glsl image-unit

image_load_store扩展仅提供*vec4访问权限的加载/存储功能。例如,如果我有layout(rgba32f) uniform image2D myimage;,我似乎必须立即写入整个像素:

imageStore(myimage, coord, vec4(1,1,1,1));

如果我只想将红色频道设置为1,我需要这样做:

vec4 pixel = imageLoad(myimage, coord);
pixel.r = 1;
imageStore(myimage, coord, pixel);

通过额外的读取引入了相当大的开销。

我可以使用哪种机制只写一个特定的频道吗?

类似于glColorMask的内容,或者可能使用不同的格式绑定数据,例如较大的GL_R32F image2DimageBuffer?如果是这样,有哪些开销影响(例如转换/传输/缓存问题)?

0 个答案:

没有答案