我正在阅读 OpenGL 3.x 的 OpenGL SuperBible。我很难理解整个“像素封装概念”。我了解到,通常 199 像素宽的图像需要 597 字节 [每个颜色 channel RGB 为 (199 * 3)3]。我的第一个问题是为什么这只是有时是正确的,作者说这只适用于 4 字节对齐系统。他接着说,要添加额外的三个字节,以便可以轻松地被四整除,我也不明白。所以我真正的问题是 4 字节对齐的意义是什么——这实际上意味着什么?然后作者说替代方案是 1 字节对齐,我也不明白。
作者说 .TGA 是 1 字节对齐或“紧”的,而 .bmp 是 4 字节对齐的。
什么是 4 字节对齐、1 字节对齐,为什么我应该使用其中一种而不是另一种?我什么时候应该使用 .tga 或 .bmp 进行纹理处理?
最佳答案
嗯,这是关于数据对齐的。它在不同的架构和内存管理上有所不同。例如,当您在 32 位处理器中编写代码时,结构体/int 上的默认填充为 4 字节。在64位中是8字节。当您想要覆盖代码结构上的默认填充时,您可以使用#pragma pack(在 Visual Studio 上)、属性((packed))(海湾合作委员会)。
请在此处查看其他引用:
关于opengl - 1 字节对齐与 4 字节对齐(像素封装),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16619825/