2017-02-17 44 views
1

我想加載一個PNG圖像,並獲取它的一些像素的顏色(以32位RGBA格式)。我搜索了很多,但沒有找到一個好的工作解決方案。如何使用SDL2讀取像素顏色?

我發現,使用SDL_LockTexture進行像素處理。但不想改變圖像,只需讀取一些像素即可。

+0

SDL的任何特定原因? –

回答

1

因爲您沒有指定,我假設您使用SDL_image加載圖像。因此IMG_Load是一個很好的候選人討論。
正如您從鏈接中看到的那樣,它會返回一個SDL_Surface(您可能希望將其轉換爲紋理,但不需要這樣做即可讀取其像素)。
有了這樣一個對象,你可以使用:

* SDL_LockSurface

使用此功能可設置一個表面直接訪問像素。

* SDL_UnlockSurface

使用此功能後,直接訪問像素釋放的表面。

的文檔狀態也是:

調用之間SDL_LockSurface()/ SDL_UnlockSurface(),可以寫入和從表面 - >像素讀,使用存儲在表面 - >像素格式格式。

像素和格式都在您的處置。它看起來是一個很好的候選人,可以按照你的要求去做。


但是......

我想加載PNG圖像,[...]

注意IMG_LoadPNG_RW返回SDL_Surface以及IMG_Load