黒と白のピクセルでPNGのみを使用するゲームを作成しています。しかし、白いピクセルの色を緑色(#00FF00)のように違うものに変更したいという時があります。SDLのピクセル色を変更する
これを正確に行う方法を教えてください。
EDIT: さて、私は解決策を考え出した。ここ
がそうするための簡単な関数である:心に留めておくべき
void setColor(SDL_Surface *surface, SDL_Color color) { Uint16 *pixels = (Uint16 *) surface->pixels; // Get the pixels from the Surface // Iterrate through the pixels and chagne the color for (int i = 0; i w * surface->h); i++) { if (pixels[i] == SDL_MapRGB(surface->format, 0xFF, 0xFF, 0xFF)) // Search for white pixels pixels[i] = SDL_MapRGB(surface->format, color.r, color.b, color.g); } }
は何か、あれば「Uint32の」へ「のuint16」に変更32ビットサーフェス、または8ビットサーフェスに「Uint8」を使用しています。
このコードの速さはわかりませんが、仕事は終わりです。
[This(http://www.libsdl.org/cgi/docwiki.cgi/Pixel_Access)は、どのように行われ、すべてのビット深度、アルファなどで機能します。 – Valmond