我使用以下代码压缩了一个三维数组:
index = x*size*size + y * size + z
但我无法从索引中构建x、y、z的值。
我在stackoverflow上找到了另一个类似的问题,但对我没有用。指数总是有误。
但我无法从索引中构建x、y、z的值。
我在stackoverflow上找到了另一个类似的问题,但对我没有用。指数总是有误。
x = index / (size * size)
y = (index / size) % size
z = index % size
inline CL_UINT getCellIndex(CL_UINT ix, CL_UINT iy, CL_UINT iz,
CL_UINT rx, CL_UINT ry, CL_UINT rz)
{
return iz * rx * ry + iy * rx + ix;
}
inline CL_UINT3 getCellRefFromIndex(CL_UINT idx,CL_UINT rx,
CL_UINT ry,CL_UINT rz)
{
CL_UINT3 result;
CL_UINT a = (rx * ry);
result.z = idx / a;
CL_UINT b = idx - a * result.z;
result.y = b / rx;
result.x = b % rx;
return result;
}