[opengl] rysowanie lustrzane
Ostatnio zmodyfikowano 2015-07-12 20:42
1aam2am1 Temat założony przez niniejszego użytkownika |
[opengl] rysowanie lustrzane » 2015-07-12 00:40:16 Mam pytanie. Czy jest możliwość ustawienia sceny tak. Aby elementy rysowane były odbite według określonej prostej pionowej.
[EDIT] Rozwiązałem problem ręcznie zmieniając pozycje itd... według prostej pionowej
[EDIT 2] Szukałem tego ponieważ nie znalazłem tego w sfml. Rozwiązanie jest w sfml. Jeżeli ktoś chce to udostępnię kod. |
|
Kaikso |
» 2015-07-12 01:25:30 Chętnie zobaczyłbym kod, sam programuję w OpenGL i to rozwiązanie może mi się kiedyś przydać ;) |
|
1aam2am1 Temat założony przez niniejszego użytkownika |
» 2015-07-12 15:35:12 Rozwiązanie jest w sfml. Ale o ile wiem ono pracuje w opengl więc powinno się dać przełożyć ten kod sf::Sprite s0;
float odbicie = 0;
sf::Sprite s1; s1.setTexture( * s0.getTexture(), true );
s1.setTextureRect( sf::IntRect( s1.getTexture()->getSize().x, 0, - s1.getTexture()->getSize().x, s1.getTexture()->getSize().y ) );
s1.setPosition( 2 * odbicie - static_cast < float >( s1.getTexture()->getSize().x + 1 + s0.getPosition().x ), 0 );
s1.setOrigin( s1.getTexture()->getSize().x - s0.getOrigin().x, s0.getOrigin().y ); s1.move( s1.getTexture()->getSize().x, s0.getPosition().y );
s1.setRotation( - s0.getRotation() );
window.draw( s1, states );
To powinno być z grubsza wszystko. |
|
Kaikso |
» 2015-07-12 17:11:16 Mogę się mylić gdyż nie znam SFML-a ale to mi wygląda na zwykłą symetrie osiową, a taką można zaprogramować prościej. |
|
1aam2am1 Temat założony przez niniejszego użytkownika |
» 2015-07-12 17:37:59 Jak? Byłbym wdzięczny. |
|
Kaikso |
» 2015-07-12 18:38:00 Poczytałem trochę o SFML i wydaje mi się że linijki związane z s1.getTexture()->getSize().x można jakoś zredukować. @edit Tak to powinno chyba wyglądać: sf::Sprite s0;
float odbicie = 0;
sf::Sprite s1; s1.setTexture( * s0.getTexture(), true );
s1.setTextureRect( sf::IntRect( s1.getTexture()->getSize().x, 0, s1.getTexture()->getSize().x, s1.getTexture()->getSize().y ) );
s1.setPosition( 2 * odbicie - static_cast < float >( 1 + s0.getPosition().x ), 0 );
s1.setOrigin( s1.getTexture()->getSize().x - s0.getOrigin().x, s0.getOrigin().y ); s1.move( 0, s0.getPosition().y );
s1.setRotation( - s0.getRotation() );
window.draw( s1, states );
Testowałem i działa poprawnie |
|
pekfos |
» 2015-07-12 19:54:24 Ujemna skala w sf::Sprite odwraca obraz względem osi. |
|
1aam2am1 Temat założony przez niniejszego użytkownika |
» 2015-07-12 20:42:32 Przykro mi twój kod. Nie działa u mnie. |
|
« 1 » |