为什么渲染引擎将图像细分为小方块?

用户名

想象一下,我在内存中有一个由anarray或an表示的图像std::vector对于本示例,我还假设我的图像为400x300像素,并且我想将此结构细分为最大为64x64像素的正方形(或图块)。

我正在考虑的数组这样声明

int a[400*300];

而且喜欢

int a[400][300];

这是1个不错的连续内存块。

我的观点是,您始终尝试使数据结构和对该数据结构的访问尽可能地保持线性。将图像细分为正方形涉及根据图像在内存中的布局方式从第一行跳到另一行或从第一列跳到另一列。在给定图像的大小和尺寸的情况下,在计算正方形的边界时我没有任何问题,但是在此正方形上表达迭代时,事情变得有点太复杂了,而我没有看到使用这种方法的真正好处。

那么,为何有关这种细分步骤的解决方案如此流行?为什么不只一次渲染1行,一次渲染1列呢?

马特纽波特

内存局部性/缓存一致性。大多数图像处理操作都以2D进行操作,为了有效访问内存,您希望2D中彼此靠近的像素在内存中彼此靠近。像这样将数据按块排列意味着,与使用简单的线性布局相比,具有相同x坐标和相邻y坐标的2个像素平均具有更近的内存地址。

有多种更复杂的布局图像的方法,这些图像通常由GPU渲染时用于纹理,它们平均可以提供更好的内存局部性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么轻按我的Swift按钮时会显示一个蓝色小方块?

来自分类Dev

小方块而不是图例中的线?

来自分类Dev

用小方块代替图例中的线?

来自分类Dev

Java分区表面成小方块

来自分类Dev

Android Studio XML带有黄色小方块

来自分类Dev

Google Maps Javascript API以小方块显示地图

来自分类Dev

具有不同大小方块的网格,并排在彼此的顶部

来自分类Dev

为什么渲染图像不起作用

来自分类Dev

将捕获的组再细分为python正则表达式的最佳方法是什么?

来自分类Dev

将列表细分为列表列表

来自分类Dev

将列表的元素细分为单独的列

来自分类Dev

将NumPy数组细分为常规网格

来自分类Dev

将Class <E>细分为Class <E []>

来自分类Dev

将列表的元素细分为单独的列

来自分类Dev

将Class <E>细分为Class <E []>

来自分类Dev

Ionic使用什么渲染引擎?

来自分类Dev

为什么在某些图像中进行直方图均衡(scikit图像)和Otsu mahotas方法后会出现大的白色方块?

来自分类Dev

为什么我的球不能跳出方块?

来自分类Dev

为什么将JavaScript V8引擎称为引擎?

来自分类Dev

为什么将JavaScript V8引擎称为引擎?

来自分类Dev

为什么用十进制像素渲染图像?

来自分类Dev

为什么不渲染字节流中的图像?

来自分类Dev

尝试将图像一分为二时,为什么我得到的图块无法扩展到外部图像错误

来自分类Dev

将功能分为验证和实施?为什么?

来自分类Dev

为什么聚合将数据集划分为子组?

来自分类Dev

为什么ABAP将类分为实现和定义?

来自分类Dev

尝试将新节点添加到链接列表时,为什么会出现细分错误?

来自分类Dev

Angular渲染引擎的目的是什么?

来自分类Dev

将一列拆分或细分为多列

Related 相关文章

热门标签

归档