2013-03-12 154 views
1

我使用C++創建了基本的基於控制檯的圖像處理工具,並且迄今爲止發現創建的函數對RGB值的操作非常簡單!使用SDL_CreateRGBSurface創建新的SDL_Surface時遇到的困難

我現在想要做的是創建模糊,銳化和調整圖像大小的函數。我知道爲了做到這一點,我必須將新像素映射到新圖像。我有一個有點問題,採用這種內置的SDL函數來創建一個新的空白表面上我打算到新的像素映射:

SDL_Surface *SDL_CreateRGBSurface(Uint32 flags, int width, int height, int depth, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask); 

我的程序的其餘部分使用Uint8*而非Uint32,使我不確定這會如何影響訴訟。另外,我並不是100%確定所有參數以及它們的用途/標誌和深度。

有人可以給我一些關於如何使用這個函數來正確創建一個新的SDL_Surface的建議嗎?

回答

4

有一個代碼示例在這裏,你可以看看:http://wiki.libsdl.org/moin.fcg/SDL_CreateRGBSurface

具體而言,您正在尋找的路線是:

surface = SDL_CreateRGBSurface(0,width,height,32,0,0,0,0); 

該標誌用於各種事情,但你應該能夠將其設置爲0罰款。至於深度,這是指您正在查看的像素數量。所以在這種情況下,8 * 4是32(包括alpha)。

我認爲你已經加載了圖像。如果是這樣,您可以使用此加載的圖像來獲取每像素的位數:

surface->format->BitsPerPixel