sfml kolorowanie wybranego koloru

0

czy da się zmienić jeden kolor tekstury na inny?

0

Da się.

0

A jak? Bo samo kolorowanie zmieni mi wszystkie kolory a zamiana tego na 2 tekstury lub lista wierzchołków jest mało wygodna...

0

Jak wreszcie napiszesz, co rozumiesz przez zmienić jeden kolor tekstury na inny to się zobaczy.

0

Chcę wypełnić wszystkie pixele tekstury w danym kolorze innym kolorem. Czyli np wszystkie czerwone zamienić na niebieskie bez zmiany innych

1

Prozaiczny przykład !!nie używać na produkcji!!:

auto &image = your_image;
auto &searched_color = your_searched_color;
auto &new_color = your_new_color;
auto size = image.getSize();

for(size_t y = 0; y < size.y; ++y){
    for(size_t x = 0; x < size.x; ++x){
        auto current_pixel_color = image.getPixel(x, y);
        if(current_pixel_color == searched_color)
            image.setPixel(x, y, new_color);
    }
}

Normalnie chciałbyś hurtem wszystko pozmieniać, niestety sf::Image::getPixelsPtr() zwraca pixele tylko do odczytu, dlatego musiałbyś się bawić w skopiowanie, podmienienie i upchnięcie w jakimś formacie, który pozwoli Ci na załadowanie całości przez sf::Image::loadFromMemory()

Powinieneś użyć sf::Image::create (unsigned int width, unsigned int height, const Uint8 *pixels) zapewniając pixele w postaci twoich zmian naniesionych na kopię sf::Image::getPixelsPtr() i wrzucić całość przez sf::Image::copy(...)

1 użytkowników online, w tym zalogowanych: 0, gości: 1