Я использую SDL для своего проекта, и мне нужен более короткий способ получения цветов.
Я хочу сделать что-то вроде этого:
SDL_FillRect(screen, &screen->clip_rect, 0x0F380F);
Вместо этого:
SDL_FillRect(screen, &screen->clip_rect, SDL_MapRGB(screen->format, 0x0F, 0x38, 0x0F));
Когда я работал в DarkGDK, можно было делать то, что я хотел, и это было здорово и просто, но когда я пытаюсь сделать это в SDL, я теряю цвета.
Ответ 1 · рейтинг 1 · Antti
Как насчет определения этого в одном из ваших заголовочных файлов:
#define My_FillRect(screen, num) \
do { \
SDL_FillRect(screen, &screen->clip_rect, \
SDL_MapRGB(screen->format, \
num >> 16, \
(num >> 8) & 0xff, num & 0xff); \
} while (0)
Затем вы можете использовать My_FillRect(screen, 0x0F380F);, и компилятор должен иметь возможность сворачивать константы, чтобы не было потери производительности.