opengl - 1 字节对齐与 4 字节对齐(像素封装)

标签 opengl pixel structure-packing

我正在阅读 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/

相关文章:

android - 使用 FaceDetector.Face 在 Android 中查找眼睛之间的距离

c - _int64 位域

opengl - 在Mac OS X上编译OpenGL SOIL

java - LWJGL 在纹理上绘制矩形

c++ - 纹理渲染和 VBO 的 [OpenGL/SDL/C++]

c++ - 包含位字段的结构的大小

opengl - 在 gouraud shading 中,什么是 T 型连接问题以及如何使用 OpenGL 进行演示

java - 如何在JavaFX(逐像素) Canvas 中创建填充动画?

c# - 扫描特定颜色屏幕的更有效方法?