目标:我正在为帧缓冲区编写一个非常简单的图像查看器/dev/fb0
(类似于fbi)。
当前状态:
/sys/class/graphics/fb0/virtual_size
我的软件从(例如)获取像素分辨率1920,1080
。- 然后(对于每一行)它将为每 1920 行像素(总共 4x1920=7680 字节)写入 4 个字节(BGRA)到
/dev/fb0
. 这在我的一台分辨率为 1920x1080 的笔记本电脑上运行得非常好。 - 更准确地说:在
y
-rowx
-col =>arr[y * 1920 * 4 + x * 4 + channel]
值所在的位置channel
设置像素0,1,2,3
(分别为B
、G
、R
和A
)。
问题:
当我在分辨率为 ( /sys/.../virtual_size
->的旧笔记本电脑上尝试使用相同的软件时1366,768
,图像显示不正确(有点歪斜)。所以我研究了像素宽度值,发现该值是1376(不是 1366)。
问题:
- 这 10 个额外字节从何而来?
- 而且,我怎样才能在不同的机器上获得 10 个额外字节的值(自动,而不是手动调整它)?
- 为什么有些机器需要这些额外的 10 个字节,而有些机器不需要它们?