如何计算帧缓冲区间距?

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 我认为该公式使用填充计算宽度(以字节为单位),很难为您的问题找到明确的好答案

以上是关于如何计算帧缓冲区间距?的主要内容,如果未能解决你的问题,请参考以下文章

打开 gl 计算着色器和帧缓冲区

Android OpenGLES3绘图 - 帧缓冲

计算机图形学(OPENGL):帧缓冲

OpenGL 帧缓冲区颜色附件到计算着色器

openGL 中的帧速率和绘制流程

帧缓存的详细介绍