imageStore()操作超出缓冲区大小

时间:2019-03-10 20:49:34

标签: opengl compute-shader

我有计算着色器,其中有uimage2d缓冲区和该缓冲区上的imageStore()操作。我想知道如果我写入超出缓冲区大小的位置将是什么行为。会有包裹效果吗?还是行为取决于驱动程序?还是会不确定,什么都会发生?

1 个答案:

答案 0 :(得分:1)

根据规范,访问不存在的texel无效。

请参见OpenGL 4.6 API Core Profile Specification - 8.26. TEXTURE IMAGE LOADS AND STORES;第193页:

  

如果为图像加载,存储或原子操作确定的单个纹理像素不存在,则该访问将被视为无效。无效的图片加载将返回零。   无效的图片存储区无效。无效的图像原子不会更新绑定到图像单元的任何纹理,并且将返回零。 如果满足以下条件,则认为访问无效:

     

[...]

     
      
  • 所选纹理元素不存在
  •