OpenGL ES和Spir-V中的只读存储缓冲区

时间:2019-02-21 05:41:29

标签: readonly spir-v opengl-es-3.1 shader-storage-buffer

在OpenGL ES着色语言中,可以用限定符readonlywriteonly装饰着色器存储缓冲区对象(SSBO)。
OpenGL ES Shading Language version 3.1 specification的第4.9节(内存访问限定符):

  

着色器存储块,在着色器存储块中声明的变量以及声明为图像类型的变量(其关键字中带有“ image”的基本不透明类型)可以使用以下一个或多个内存限定符进行进一步限定:... (列出了一个表)

所以我可以在opengl es着色器中添加一些东西,例如:

layout(std430, binding = 0) readonly buffer mybuffer {
        a_struct_type myarray[];  //a_struct_type was defined before
    };

但是如何在spir-v中指定只读
spir-v specification的3.18节“访问限定符”中,它表示:

  

由OpTypeImage和OpTypePipe使用。

这是否意味着在spir-v中不能将SSBO指定为只读?我不认为SSBO属于OpTypeImage或OpTypePipe类型。

---------------------------------------------
 Resource Type  |  Storage Class |    Type       
---------------------------------------------
  Storage Buffer|  Uniform       |
                |----------------|  OpTypeStruct
                | Storage Buffer |
----------------------------------------------

1 个答案:

答案 0 :(得分:0)

直觉上合适的decorationsNonWritableNonReadable