SDL2 как загрузить картинку (на иконку окна и на курсор)?

225
16 июня 2018, 14:00

Нужно загрузить картинку в SDL_Surface для установки её на иконку окна и на кастомный курсор. Нашел вот этот способ превращения массива пикселей в SDL_Surface: https://wiki.libsdl.org/SDL_SetWindowIcon Но тогда появляется вопрос, а как прочитать картинку в массив пикселей? Попробовал разные сайты, конвертирующие картинку в массив пикселей. Такой код:

uint8_t pixels[] = {
    0xff, 0xff, 0xff, 0x00, 0xff, // и т.д, огромное кол-во хексов цифр...
};
SDL_Surface *cursor;
cursor = SDL_CreateRGBSurfaceFrom(pixels, 16, 16, 16, 16*2, 0x0f00, 0x00f0, 0x000f, 0xf000);
SDL_Cursor * c = SDL_CreateColorCursor(cursor, 0,0);
SDL_SetCursor(c);

Так вот, картинка отображается вообще не корректно. Её видно только при разрешении 16x16, но при этом цвета глючат, а при бОльшем разрешении картинки так и вовсе ничего. Функция, помимо пикселей и разрешения, принимает ещё какие-то r, g и b -маски, но для чего они нужны, я так и не понял, а также depth и pitch (которые лучше не менять, как я выяснил). Ещё, в примере на сайте цифры явно не такие. Там хексы каких-то пятизначных цифр.

Так как же правильно загружать картинку? Объясните, пожалуйста, новичку в SDL2 (SDL_LoadBMP не предлагать, нужна альфа).

Answer 1

В общем, проблема решена. Нашел на оф сайте объяснение, как с stbimage прочитать картинку в SDL-овский формат.

Ещё нашел на просторах гитхаба библиотеку как stb_image, только совмещенную с SDL2, но в ней почему-то работают не все форматы изображения.

Первый способ наиболее рабочий.

READ ALSO
Flexbox IE и Edge

Flexbox IE и Edge

Сверстан сайт на flexboxПроблема в том, что во всех браузерах меню нормально и адекватно отображается в одну строку, но в IE и Edge текст в меню съезжает...

200
Как переписать код под другой стиль

Как переписать код под другой стиль

Есть пример кода (библиотеки, котоирую я использую)

218
Javascript Canvas и CSS цвета

Javascript Canvas и CSS цвета

На сайте мне необходима функция цветовой пипетки, то есть возможность скопировать цвет пикселя, который находится под курсором

219
Как избавиться от полотна циклов

Как избавиться от полотна циклов

У меня есть кодБольшой, с вложенными циклами

220