片段着色器为无符号整数纹理

时间:2013-02-22 12:29:46

标签: opengl glsl opengl-3 fragment-shader

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

代码:

#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是否有错误或我的着色器是错误的?如果错了,我怎么能达到同样的结果?

2 个答案:

答案 0 :(得分:1)

试试这个:

temp = temp / uint(2);

答案 1 :(得分:1)

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

temp = temp / 2u;

使用unsigned int constant。