このフラグメント シェーダー コードは 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 でフラグメント シェーダーについて次のように述べられています。
フラグメント入力は、符号付きおよび符号なしの整数と整数ベクトル、float ... のみにすることができます。
これはドライバーのバグですか?