[SFML 2.0] Tworzenie kanału przezroczystości na podstawie określonego koloru w teksturze
Ostatnio zmodyfikowano 2012-10-19 13:25
kemsai Temat założony przez niniejszego użytkownika |
[SFML 2.0] Tworzenie kanału przezroczystości na podstawie określonego koloru w teksturze » 2012-10-18 17:42:26 Witam. Pytanie moje brzmi tak: Czy da rade zrobić przezroczyśtość koloru w Texture? Próbowałem jakiejś takiej konwersji ale nic to nie dało. Image pomoc; pomoc = mTekstury[ sNazwa ].copyToImage(); pomoc.createMaskFromColor( Color( 255, 0, 55 ) );
mTekstury[ sNazwa ].loadFromImage( pomoc );
|
|
m4tx |
» 2012-10-18 17:45:09 Hmmm... A może przelatuj po pikselach Texture i ustawiaj alfę 0 tam, gdzie potrzebujesz? :) |
|
DejaVu |
» 2012-10-18 17:55:14 Dziwne zadajesz pytania - podajesz nazewnictwo z SFML2, stosujesz klasy z SFML1.6, wywołujesz metody należące do SFML2... |
|
Mrovqa |
» 2012-10-18 18:00:56 Co do pomysłu @m4txa - pisałem kiedyś coś takiego, nawet znalazłem kod (SFML 1.6): int new_alpha;
sf::Image img; if( !img.LoadFromFile( in ) ) { cout << "Cannot load image!\n"; GETCH; return 2; };
int x = img.GetWidth(); int y = img.GetHeight(); cout << "Size: " << x << "x" << y << "px\n"; char * ptr = const_cast < char * >( reinterpret_cast < const char *>( img.GetPixelsPtr() ) ); if( !ptr ) { cout << "Cannot get pixel array!\n"; GETCH; return 3; } ptr += 3; cout << "Changing alpha... (new value: " << new_alpha << ")...\n"; for( int i = 0; i < x * y; i++, ptr += 4 ) * ptr = new_alpha;
Wiem, kod nie jest zbytnio przejrzysty - napisałem to "na szybkiego" specjalnie dla jednego obrazka (różowego jednorożca na stronie gyna ^^). |
|
kemsai Temat założony przez niniejszego użytkownika |
» 2012-10-18 18:06:50 Uczyłem się na SFML 1.6 ostatnio zmieniłem na 2.0 i teraz mogę trochę mieszać.
W 1.6 ten efekt dało rade lajtowo zrobić, tylko że własnie na Image a nie Texture. |
|
DejaVu |
» 2012-10-18 18:16:29 Tak na oko kod powinien działać - pomijając fakt, że jakiś dziwny kolor sobie wybrałeś do określania przezroczystości. |
|
kemsai Temat założony przez niniejszego użytkownika |
» 2012-10-18 19:01:46 To jest taki różowy oczojebny kolor, wiec raczej nigdzie nie jest używany.
Czy to że ten kod nie działa moze być wziązane z ustawieniem blendmode? Bo w dokumentacji znalazłem że RenderWindow ma taką metodę ale jest ona protected. |
|
Mrovqa |
» 2012-10-18 19:20:25 @DejaVu kolor zwany "magicznym różem" - najczęściej wykorzystywany do maskowania, bo mało gdzie występuje. (Nie jestem pewien, czy to na pewno jest (255,0,55), ale wiem, że jest coś takiego - nawet chyba pisze o tym w kursie WinAPI Złośliwca.) |
|
« 1 » 2 |