Установите формат пикселей и создайте текстуру с поверхности в SDL

В настоящее время я пробую некоторые вещи, используя манипуляции с пикселями, и я хотел бы установить формат пикселя 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 так, чтобы он мог возиться с пикселями. Как я могу сделать это и создать текстуру на основе поверхности?

2

Решение

API SDL2 обеспечивает функцию 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

3

Другие решения


По вопросам рекламы [email protected]