我同时使用顶点着色器和几何着色器。我的顶点着色器只不过将其输入转发到几何着色器。
#version 330 core
layout (location = 0) in uint xy;
layout (location = 1) in uint znt;
out uint out_xy;
out uint out_znt;
void main()
{
out_xy = xy;
out_znt = znt;
}
是否可以申报xy
and znt
作为输入和输出,这样我就不需要重命名它们?
是否可以将着色器变量声明为输入和输出?
不。变量的名称是标识符,两个不同的变量必须具有不同的标识符。
See GLSL - OpenGL 着色语言 4.6; 3.7 标识符;第18页
标识符用于变量名称、函数名称、结构名称和字段选择器...
... 更一般地说,这是一个编译时错误
重新声明一个变量, ...
但是当然可以使用实例名称声明接口块。正如尼可波拉斯的回答所述。在这种情况下,可以通过接口块的实例名称和变量名称来访问变量。
但是仍然无法使用没有实例名称的接口块并在实例块内重用变量名称。
See GLSL - OpenGL 着色语言 4.6; 4.3.9 接口块;第54页
如果未使用实例名称 (instance-name),则块内部声明的名称的作用域为全局级别,并且可以像在块外部声明的名称一样进行访问。如果使用实例名称(instance-name),则它将所有成员放入其自己的名称空间内的范围内,并通过字段访问
选择器 ( . ) 运算符(类似于结构)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)