[SFML 2.1] SFML wolno chodzi
Ostatnio zmodyfikowano 2013-08-31 13:49
Natoito Temat założony przez niniejszego użytkownika |
[SFML 2.1] SFML wolno chodzi » 2013-08-31 10:38:16 a więc przechodzę z 1.6 na 2.1 i zrobiłem sobie prostą aplikację żeby szybko nauczyć się obsługi nowszej wersji i nie chodzi ona płynnie, sprite wyraźnie przeskakuje zamiast przesuwać się płynnie: #include <SFML\Graphics.hpp> #include <iostream>
int main() { sf::Texture T1; T1.loadFromFile( "tło.jpg" ); sf::Texture T2; T2.loadFromFile( "1.png" ); sf::Sprite S1( T1 ); sf::Sprite S2( T2 ); sf::Sprite S3( T2 ); S1.setPosition( 0, 0 ); S2.setPosition( 200, 200 ); sf::RenderWindow Window( sf::VideoMode( S1.getTexture()->getSize().x, S1.getTexture()->getSize().y, 32 ), "Próby" ); Window.setFramerateLimit( 60 ); double dl, suma = 0; unsigned short int i = 0; sf::Vector2i Mouse; const unsigned short int speed = 400; sf::Clock FrameTime; FrameTime.restart(); while( Window.isOpen() ) { dl = FrameTime.getElapsedTime().asSeconds(); suma += dl; if( suma >= 1 ) { std::cout << i << std::endl; suma = 0; i = 0; } FrameTime.restart(); Window.draw( S1 ); Mouse = sf::Mouse::getPosition( Window ); sf::Event eventw; if( Window.pollEvent( eventw ) ) { if( eventw.type == sf::Event::Closed ) Window.close(); if(( eventw.type == sf::Event::KeyPressed ) &&( eventw.key.code == sf::Keyboard::Down ) ) S2.move( 0, speed * dl ); if(( eventw.type == sf::Event::KeyPressed ) &&( eventw.key.code == sf::Keyboard::Up ) ) S2.move( 0, speed * - dl ); if(( eventw.type == sf::Event::KeyPressed ) &&( eventw.key.code == sf::Keyboard::Left ) ) S2.setPosition( S2.getPosition().x -( speed * dl ), S2.getPosition().y ); if(( eventw.type == sf::Event::KeyPressed ) &&( eventw.key.code == sf::Keyboard::Right ) ) S2.setPosition( S2.getPosition().x +( speed * dl ), S2.getPosition().y ); } Window.draw( S2 ); sf::Vector2f Dot = S2.getInverseTransform().transformPoint(( sf::Vector2f ) Mouse ); if( Dot.x >= 0 && Dot.y >= 0 && Dot.x <= S2.getTextureRect().width && Dot.y <= S2.getTextureRect().height ) if( sf::Image( T2.copyToImage() ).getPixel( Dot.x, Dot.y ).a != 0 ) { S3.setPosition( Mouse.x -( S3.getTexture()->getSize().x / 2 ), Mouse.y - 20 ); Window.draw( S3 ); } Window.display(); i++; } return 0; }
tak więc nawet taki prosty kod nie chodzi płynnie, może źle skonfigurowałem VS 2010 |
|
pekfos |
» 2013-08-31 13:11:03 Nie używaj zdarzeń do chodzenia. |
|
Natoito Temat założony przez niniejszego użytkownika |
» 2013-08-31 13:49:55 eh, no tak przecież, kompletnie o tym zapomniałem, już zamieniłem na bezpośredni dostęp do klawiatury, dziękuję Ci
temat do zamknięcia |
|
« 1 » |