可以在GLSL的结构定义中使用前向声明的结构吗?

时间:2014-06-30 11:30:35

标签: opengl glsl

前向声明的结构可以用在另一个结构的定义中吗?例如:

struct  A;
struct B
{
     float x;
     float y;
     A     z;
};

我试图在链接/编译时解析GLSL文件,以便更容易在C中使用它们。我似乎无法在任何地方找到这样的细节。

1 个答案:

答案 0 :(得分:3)

据我所知,GLSL并未正式支持前向声明的结构。关于结构的The spec, section 4.1.8没有提到这样的特征,并且阅读语法附录,我也找不到任何提及。

如果你考虑一下,前向声明在GLSL中并没有真正有用,因为它们在C中。由于GLSL没有指针,尝试使用前向声明的结构将尝试访问不完整的类型。在C语言中,前向声明用于允许声明不透明指针。

如果您正在为GLSL编写自定义解析器,请务必阅读GLSL spec着色语言语法的第9部分。 GLSL基于C,但它只是C的一小部分。