3

此片段着色器代码在 Windows 中编译,但在 OS X 中引发错误(Mountain Lion,使用 3.2 核心上下文)。

#version 150 core
in int vinstance_id;
uniform uint object_id[16];
out uint id_map;

void main() {
    id_map = object_id[vinstance_id];
}

错误是:

ERROR: 0:2: int can't be an in in the fragment shader

我认为这是不对的:在GLSL 1.50 规范中,第 4.3.4 节谈到了片段着色器:

片段输入只能是有符号和无符号整数和整数向量,浮点数...

这是驱动程序错误吗?

4

1 回答 1

10

不,你没有仔细阅读规范。

作为有符号或无符号整数或整数向量的片段着色器输入必须使用插值限定符flat进行限定。

(大约在链接文档的第 32 页中间,如果有人想验证)

于 2013-02-12T14:30:06.110 回答