想象一下,我在内存中有一个由 anarray
或 an表示的图像std::vector
;为了这个例子,我还假设我的图像是 400x300 像素,我想将此结构细分为最大 64x64 像素的正方形(或平铺)。
我正在考虑的数组是这样声明的
int a[400*300];
不喜欢_
int a[400][300];
这是 1 个很好的连续内存块。
我的观点是你总是尽量保持数据结构和对该数据结构的访问尽可能线性。将图像细分为正方形涉及从 1 行跳转到另一行或从 1 列跳转到另一行,具体取决于图像在内存中的布局方式。在给定图像的大小和尺寸的情况下,我在计算正方形的边界时没有问题,但是在表达对这个正方形的迭代时,事情变得有点太复杂了,我没有看到这种方法有什么真正的好处。
那么为什么这种细分步骤的解决方案如此受欢迎呢?为什么不一次渲染 1 行或 1 列?