我正在使用以下着色器为无符号整数纹理读取数据: 片段着色器:
代码:
#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是否有错误或我的着色器是错误的?如果错了,我怎么能达到同样的结果?
答案 0 :(得分:1)
试试这个:
temp = temp / uint(2);
答案 1 :(得分:1)
GLSL不允许有符号和无符号整数之间的隐式转换,因此二进制操作数的两个操作数必须相同。使用:
temp = temp / 2u;
使用unsigned int constant。