【问题标题】:How to calculate Framebuffer pitch?如何计算帧缓冲区间距?
【发布时间】:2013-12-12 10:37:13
【问题描述】:

我有一个 UI 应用程序,它分别以 16、24 或 32 bpp 将输出渲染到屏幕外帧缓冲区。

我需要计算pitch,我的理解是pitch是一条扫描线的字节数,是否等于screenx*bitsperpixel?虽然显然它不会产生正确的结果。

我们可以有一个公式(通用)来计算音高吗?

【问题讨论】:

    标签: c++ c opengl opengl-es


    【解决方案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 我认为该公式使用填充计算宽度(以字节为单位),很难为您的问题找到明确的好答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 2023-03-07
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多