GLSL 4.2 - 语法错误:“layout”解析错误

时间:2013-09-29 16:28:25

标签: opengl glsl opengl-4

所以,我最近发现了一个有趣的着色器并尝试编译它。

但是,GLSL编译器抛出了以下错误:

ERROR: 0:50: error(#132) Syntax error: "layout" parse error

@(片段着色器)

#version 420

...

uint ImageAtomic_Average_RGBA8(layout (r32ui) volatile uimage3D Img, ivec3 Coords, vec4 NewVal)
{ ... }

详细说明:

  • 卡:AMD Radeon HD 7870(支持OpenGL 4.20)
  • 我尝试了4.2驱动程序和4.3 beta驱动程序。

1 个答案:

答案 0 :(得分:1)

布局限定符不能是函数签名的一部分。 GLSL 4.40规范第6.1.1节为函数原型定义了以下语法:

  

function-prototype:
  精度限定符类型函数名称( *参数限定符* 精度限定符类型名称数组-specifier,...)

现在,参数限定符可以是

之一
  

const
   in
   out
   inout
  准确
  记忆限定符易失性,...)
  精度限定符 lowp ,...)

一致地,第4.10节明确指出:

  

布局限定符不能用于形式函数参数[..]

如果删除布局限定符,则应该没问题。如果没有,那就是驱动程序错误。