我有一个使用SDL_TEXTUREACCESS_TARGET访问创建的纹理,我想使用SDL_RenderReadPixels()函数获取所有像素。功能参数之一是音高,我真的不知道在哪里可以得到它。
使用先前创建的曲面的尺寸创建纹理,但是使用pitch-> pitch作为间距参数生成EXC_BAD_ACCESS的函数调用。
纹理和表面尺寸为800x600,而Surface-> pitch返回3200,这对我来说很奇怪,因为我认为pitch是内存中纹理的宽度,并且预期surface-> pitch大约为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-mirror。