与uint一起使用glsl模

时间:2019-09-11 11:13:34

标签: opengl-es glsl compute-shader opengl-es-3.1

在我的计算着色器中,我尝试基于图像矩形内的gl_GlobalInvocation变量来计算每个本地调用的texel坐标。 对于gl_GlobalInvocation.x的较大值(最多262144),我得到了奇怪的结果。 (gl_WorkGroupSize = 1024(1024,1,1),gl_NumWorkGroups = 256(256,1,1),宽度<= 512,高度<= 512) 可能是因为glsl模无法处理OpenGL ES 3.1中的uint数据类型。

是否有替代方法来计算uint范围的坐标?

ivec2 coords;
uint width = uint(rectPos.z-rectPos.x); 
uint height = uint(rectPos.w-rectPos.y);
coords.x = int(gl_GlobalInvocationID.x % width) + rectPos.x;
coords.y = int(gl_GlobalInvocationID.x / height) + rectPos.y;
... 
vec4 color = imageLoad(texture, coords)
...

0 个答案:

没有答案