ridic14 Temat założony przez niniejszego użytkownika |
» 2012-10-06 23:12:01 Zrobiłem tak: sf::View view;
sf::RectangleShape area;
App.setView( view );
sf::Vector2f windowPos = konwertuj( view, area.getPosition() );
sf::Vector2f konwertuj( sf::View view, const sf::Vector2f coords ) { return view.getTransform().transformPoint( coords ); }
::glScissor( windowPos.x, windowPos.y + area.getSize().y, area.getSize().x, area.getSize().y );
I nie pomogło więc sprawdziłem std::cout << windowPos.x << std::endl; i dało mi to: -0.1 ; -0.7 << te dwie liczby "mrygały" w konsoli std::cout << windowPos.y << std::endl; i dało to :0,2 ; 0.782 ; 0.582 << te trzy liczby "mrygały" w konsoli Więc dalej nie osiągnąłem celu i liczę na pomoc ... Może jakieś pomysły? i czy sposób użycia jest poprawny? ::glScissor( windowPos.x, windowPos.y + area.getSize().y, area.getSize().x, area.getSize().y ); |
|
DejaVu |
» 2012-10-07 00:18:50 Napisz maksymalnie krótki przykład, który się kompiluje i powinien Twoim zdaniem poprawnie przycinać pole modyfikacji sceny. Wówczas będzie mógł Ci ktoś wskazać błędy. Z tym co zostało napisane w tym temacie powinieneś umieć rozwiązać swój problem... |
|
ridic14 Temat założony przez niniejszego użytkownika |
» 2012-10-07 10:02:10 No tu mam działający kod tylko że to przycina tak że nie widać nic?! void CBox::draw() { sf::Vector2f windowPos = konwertuj( view, area.getPosition() ); App.draw( area ); ::glEnable( GL_SCISSOR_TEST ); ::glScissor( windowPos.x, windowPos.y + area.getSize().y, area.getSize().x, area.getSize().y ); App.draw( tekst ); ::glDisable( GL_SCISSOR_TEST ); } konwersje przerobiłem bo nie wiem co to CRenderWindow sf::Vector2f konwertuj( sf::View view, const sf::Vector2f coords ) { return view.getTransform().transformPoint( coords ); } no i tak to wygląda i nie przycina poprawnie Czekaj czekaj..... Ale co z pozycją tekstu? postanowiłem zobaczyć jak to wygląda... i ::glScissor( area.getPosition().x, area.getPosition().y, area.getSize().x, area.getSize().y ); powoduje(czarny kolor to działanie ::glScissor): użycie sf::Vector2f windowPos = konwertuj( view, area.getPosition() ); ::glScissor( windowPos.x, windowPos.y, area.getSize().x, area.getSize().y ); powoduje |
|
ridic14 Temat założony przez niniejszego użytkownika |
» 2012-10-07 22:08:33 Czy nie ma jakiegoś łatwiejszego sposobu? |
|
DejaVu |
» 2012-10-07 22:13:32 sf::Vector2f windowPos = konwertuj( view, area.getPosition() );
Jakie wartości posiada obiekt area? Bo skoro area ma (0,0) to nic dziwnego, że wskazuje na lewy, dolny róg ekranu... |
|
ridic14 Temat założony przez niniejszego użytkownika |
» 2012-10-07 22:14:27 area x = -0,7 y 0.78 po konwersji a przed 150x109
tam wyżej na czarno jest zaznaczone gdzie wg glscissor są boxy |
|
DejaVu |
» 2012-10-07 22:17:44 Eh... dobra, to nie ma sensu - wklej kod main.cpp, który będę mógł wkleić u siebie i sprawdzić to - szybciej będzie :P napisz też jakiego SFML używasz :) |
|
ridic14 Temat założony przez niniejszego użytkownika |
» 2012-10-07 22:18:58 sfml 2.0 a kod mam podzielony na bezsensowne klasy... więc.. albo wkleję wszystkie albo zapakuję w zip i wrzucę
edit:
jeśli nie plik to wkleję kod
ogólnie to wydaje mi się że za całość źle się zabrałem |
|
1 2 « 3 » 4 |