2011-07-18 62 views
0

我正在使用SDL來開發我的項目,並且我想要一種獲取顏色的較短方法。SDL顏色快捷方式

我想要做這樣的事情:

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

取而代之的是:

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

當我在DarkGDK是工作,你可以不喜歡我想要的東西,這是偉大的並且很簡單,但是當我嘗試在SDL中執行此操作時,我得到了顏色。

+1

SDL有許多不同的像素格式 - 它們可能無法映射,這取決於哪一個(我的猜測,無論如何)。你可以使用宏:'#define RGB(r,g,b)SDL_MapRGB(screen-> format,255,255,255)''。 – new123456

回答

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);和編譯器應該能夠摺疊的常量,這樣不會有性能損失。