在哪里可以获得 SDL2 中SDL_RenderReadPixels函数的正确音高参数

Where can I get correct pitch parameter for SDL_RenderReadPixels function in SDL2?

本文关键字:高参数 参数 函数 RenderReadPixels SDL2 SDL 在哪里      更新时间:2023-10-16

我有一个使用 SDL_TEXTUREACCESS_TARGET 访问权限创建的纹理,我想使用 SDL_RenderReadPixels() 函数获取它的所有像素。其中一个函数参数是音高,我真的不知道在哪里可以得到它。

纹理是使用先前创建的曲面的尺寸创建的,但将曲面>间距作为螺距参数的函数调用会生成EXC_BAD_ACCESS。

纹理和表面尺寸为 800x600,表面>间距返回 3200,这对我来说很奇怪,因为我认为间距是内存中纹理的宽度,并且预期的表面>间距类似于 1024。

pitch 的确切值取决于像素格式,并且始终与 4 字节边界对齐。

static int
SDL_CalculatePitch(Uint32 format, int width)
{
    int pitch;
    if (SDL_ISPIXELFORMAT_FOURCC(format) || SDL_BITSPERPIXEL(format) >= 8) {
        pitch = (width * SDL_BYTESPERPIXEL(format));
    } else {
        pitch = ((width * SDL_BITSPERPIXEL(format)) + 7) / 8;
    }
    pitch = (pitch + 3) & ~3;   /* 4-byte aligning for speed */
    return pitch;
}

取自 SDL 镜像。