代表3D数据的1D数组的邻域

时间:2018-10-30 21:45:12

标签: c arrays mipmaps

我需要在一维数组中找到相邻的数组元素,参考点是左上角的元素。传入源数据是行优先的RGBA像素数据的1D数组,大小与W * H数组相同。我需要使用邻居来计算mipmap。在2D数组中,我将使用以下内容:

int i;
int j;
int array[H][W]; // width by height

array[j + 0][i + 0]; // top-left
array[j + 0][i + 1]; // top-right
array[j + 1][i + 0]; // bottom-left
array[j + 1][i + 1]; // bottom-right

我的理解是,线性数组索引通常是采用以下形式的多项式:i + j * W + k * W * H ...这就是我所得到的。

int i; // 0 < i < W / 2
int j; // 0 < j < H / 2
int array[W * H];

i * 2 + (j * 2 + 0) * W + 0; // top-left
i * 2 + (j * 2 + 0) * w + 1; // top-right
i * 2 + (j * 2 + 1) * W + 0; // bottom-left
i * 2 + (j * 2 + 1) * W + 1; // bottom right

神奇的数字使我警惕。我不确定如何将其概括为表示3D数据的1D数组(4矢量的2D数组),或者上述方法是否合理。如果我需要用于较小的mipmap的更宽的过滤器,则一般形式会很好,因为向下采样已经已经向下采样的纹理会引入额外的混叠,而不是直接从源数据中采样并使用更宽的过滤器。

0 个答案:

没有答案