Ярлык цвета SDL

Я использую SDL для своего проекта, и мне нужен более короткий способ получения цветов.

Я хочу сделать что-то вроде этого:

SDL_FillRect(screen, &screen->clip_rect, 0x0F380F);

Вместо этого:

SDL_FillRect(screen, &screen->clip_rect, SDL_MapRGB(screen->format, 0x0F, 0x38, 0x0F));

Когда я работал в DarkGDK, можно было делать то, что я хотел, и это было здорово и просто, но когда я пытаюсь сделать это в SDL, я теряю цвета.


person Benjamin    schedule 18.07.2011    source источник
comment
SDL имеет много разных форматов пикселей - возможно, они могут не отображаться, в зависимости от того, какой из них (во всяком случае, я думаю). Вы можете использовать макрос: #define RGB(r, g, b) SDL_MapRGB(screen->format, 255, 255, 255).   -  person new123456    schedule 18.07.2011


Ответы (1)


Как насчет определения этого в одном из ваших заголовочных файлов:

#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);, и компилятор должен иметь возможность сворачивать константы, чтобы не было потери производительности.

person Antti    schedule 18.07.2011