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

问题描述 投票:0回答:1

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

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

纹理和表面尺寸为800x600,而Surface-> pitch返回3200,这对我来说很奇怪,因为我认为pitch是内存中纹理的宽度,并且预期surface-> pitch大约为1024。

c++ sdl sdl-2
1个回答
0
投票

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-mirror

© www.soinside.com 2019 - 2024. All rights reserved.