2

我正在为无符号整数纹理使用以下着色器来读取数据:片段着色器:

代码 :

#version 150
out uvec4 fragColor;
uniform uint factor;
void main()
{
uint temp=factor;
temp=temp/2;
fragColor = uvec4(temp,temp,temp,temp);
}

但我在驱动程序 A 上遇到错误:

“编译失败。错误:0:7:'/':错误的操作数类型。不存在接受'uint'类型的左操作数和'const int'类型的右操作数的操作'/'(并且有没有可接受的转换)错误:1 个编译错误。没有生成代码。”

在驱动程序 B 上,它运行良好。驱动程序 A 有问题还是我的着色器有误?如果错了,我怎样才能达到同样的结果?

4

2 回答 2

1

试试这个:

temp = temp / uint(2);
于 2013-02-22T16:09:39.497 回答
1

GLSL 不允许有符号整数和无符号整数之间的隐式转换,因此二进制操作数的两个操作数必须相同。采用:

temp = temp / 2u;

使用无符号整数常量。

于 2013-02-22T19:19:50.240 回答