OpenGL着色语言基本类型

时间:2012-08-07 09:30:31

标签: opengl glsl

我正在尝试在英特尔卡上运行着色器。我发现采样器类型不能声明为结构字段......这很令人失望。

我的着色器,在NVIDIA平台上,编译和运行正常,带有采样器字段的采样器数组和结构。我知道NVIDIA平台比其他平台更宽松,w.t.r。 GLSL语法,但我认为应该在结构和数组中允许采样器类型。

但是,在阅读了this页后,我感到更加困惑。特别是,我发现有趣的是以下引用:

  

采样器类型的数组是特殊的。在GLSL版本3.30下,采样器   数组可以声明

     

结构不能包含采样器类型的变量。

所以,我研究了GLSL规范,在搜索时我发现基本类型(para)中的采样器类型,数组可以由基本类型(para)组成,结构成员声明也是如此(第4.1.9段)。我是否误解了规范,或者英特尔驱动程序太“严格”

有人可以指出这个问题吗?最后一个问题应该是“采样器类型被认为是基本类型?”

1 个答案:

答案 0 :(得分:1)

这部分内容尚不清楚?

采样器是基本类型。基本类型可以在数组中。和采样器:

  

它们只能声明为函数参数或统一变量(参见第4.3.5节“统一”)。

结构中的字段既不是函数参数也不是统一变量。结构本身稍后可以声明为统一,但成员声明不是制服。因此,在结构中声明采样器是违法的。

最好不要将采样器和其他不透明类型视为类型,而应将其视为特殊构造的占位符(如纹理等)。