在 SDL 中设置像素格式并从表面创建纹理

Set the pixel format AND create texture from surface in SDL

提问人:huzzm 提问时间:2/14/2015 最后编辑:Martin Ghuzzm 更新时间:2/16/2015 访问量:3008

问:

我目前正在尝试使用像素操作进行一些操作,我想设置SDL_Surface的像素格式。这里的问题是我正在使用 SDL_image.h 加载图像。因此,我必须从这样的表面创建纹理:

surface = IMG_Load(filePath);
texture = SDL_CreateTextureFromSurface(renderer, surface);

所以我不能使用以下功能,我想要,或者我可以吗?

texture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STATIC, 640, 480);

问题是,我想将SDL_PixelFormat设置为能够弄乱像素。我怎样才能做到这一点,并基于表面创建纹理?

C++ 像素 SDL-2 表面 PixelFormat

评论


答:

3赞 Martin G 2/16/2015 #1

SDL2 API 提供以下功能:SDL_ConvertSurface

SDL_Surface* SDL_ConvertSurface(SDL_Surface*           src,
                                const SDL_PixelFormat* fmt,
                                Uint32                 flags)

你应该能够做到

surface = IMG_Load(filePath);
// Call SDL_ConvertSurface to set the pixel format of the surface you have created.
texture = SDL_CreateTextureFromSurface(renderer, surface);

参考: https://wiki.libsdl.org/SDL_ConvertSurface