C-用4D坐标索引2D平铺数据

时间:2018-09-22 17:40:56

标签: c multidimensional-array

我正在编写BC1纹理压缩器,该压缩器压缩独立的4x4像素像素。我正在拍摄2D图像,并将其转换为4x4 texel块的2D网格,即2D到4D。实际上,它是从5D到3D,因为每个texel具有4个分量,但这是一个在通道上迭代的简单循环,但是它们是恒定的并且可以分解。我知道我需要4个嵌套循环,但是4D数组索引却使我不知所措。这是我想出的,但是错过了索引范围。我显然做错了。

#define LIM_X 2
#define LIM_Y 2
#define LIM_I 4
#define LIM_J 4

unsigned int x, y, i, j;
unsigned char src[LIM_Y * LIM_J][LIM_X * LIM_I]; // 8 by 8
unsigned char tmp[LIM_Y][LIM_X][LIM_J][LIM_I];   // 2 by 2 by 4 by 4

for(y = 0; y < LIM_Y; y++) {
    for(x = 0; x < LIM_X; x++) {
        for(j = 0; j < LIM_J; j++) {
            for(i = 0; i < LIM_I; i++) {
                tmp[y][x][j][i] = src[y * LIM_J + j][x * LIM_I + i];
            }
        }
    }
}

0 个答案:

没有答案