Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML 2.0] Tworzenie kanału przezroczystości na podstawie określonego koloru w teksturze

Ostatnio zmodyfikowano 2012-10-19 13:25
Autor Wiadomość
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.
C/C++
Image pomoc;
pomoc = mTekstury[ sNazwa ].copyToImage();
pomoc.createMaskFromColor( Color( 255, 0, 55 ) );

mTekstury[ sNazwa ].loadFromImage( pomoc );
P-67029
m4tx
» 2012-10-18 17:45:09
Hmmm... A może przelatuj po pikselach Texture i ustawiaj alfę 0 tam, gdzie potrzebujesz? :)
P-67030
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...
P-67036
Mrovqa
» 2012-10-18 18:00:56
Co do pomysłu @m4txa - pisałem kiedyś coś takiego, nawet znalazłem kod (SFML 1.6):
C/C++
int new_alpha;
//...
// load file
sf::Image img;
if( !img.LoadFromFile( in ) ) { cout << "Cannot load image!\n"; GETCH; return 2; };
// changing alpha! :D
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; // set to alpha byte
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 ^^).
P-67038
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.
P-67041
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.
P-67043
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.
P-67047
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.)
P-67050
« 1 » 2
  Strona 1 z 2 Następna strona