如何计算帧缓冲区间距?
Posted
技术标签:
【中文标题】如何计算帧缓冲区间距?【英文标题】:How to calculate Framebuffer pitch? 【发布时间】:2013-12-12 10:37:13 【问题描述】:我有一个 UI 应用程序,它分别以 16、24 或 32 bpp 将输出渲染到屏幕外帧缓冲区。
我需要计算pitch,我的理解是pitch是一条扫描线的字节数,是否等于screenx*bitsperpixel?虽然显然它不会产生正确的结果。
我们可以有一个公式(通用)来计算音高吗?
【问题讨论】:
【参考方案1】:根据this:
视频 ram 中的缓冲区通常具有与其相关的步幅(也称为音高)。步幅是缓冲区的宽度(以字节为单位)
例如,如果您有一个 16 位/像素(2 字节/像素)的 1024x768 像素缓冲区,则您的步幅为:
1024 像素 * 2 字节/像素 = 2048 字节
所以一般的计算方法是:buffer_width * bytes_per_pixel
但重要的是要注意,对于 tile 渲染器,帧缓冲区在内存中不是线性的,因此我认为间距是 tile 的宽度(我无法找到证实这一点的来源)。
【讨论】:
感谢 Raxvan,感谢您的回复,我在浏览网络时偶然发现了这个公式来计算音高(抱歉现在没有链接)...((( Framebuffer.Width * 32 ) + 31 ) & ~31 ) >> 3,这看起来像 32bpp,如果我得到 16bpp 怎么办?如果我只是用 16 替换 32 会起作用吗?任何想法> @Saqlain 我认为该公式使用填充计算宽度(以字节为单位),很难为您的问题找到明确的好答案以上是关于如何计算帧缓冲区间距?的主要内容,如果未能解决你的问题,请参考以下文章