2016-07-19 23 views
1

私はC++とSFMLを使って簡単なアプリケーションを作ろうとしています。私は、アプリケーションが任意の解像度(ウィンドウまたはフルスクリーン)で動作するようにしたいと思います。SFML - ウィンドウサイズ変更後のセンタービュー

私がドキュメントで見つけたソリューションに最も近いのは、この単純なコードです。

if (event.type == sf::Event::Resized) 
{ 
    // update the view to the new size of the window 
    sf::FloatRect visibleArea(0, 0, event.size.width, event.size.height); 
    window.setView(sf::View(visibleArea)); 
} 

これは、http://i.imgur.com/RvCOuKi.pngのようなエフェクトを作成します。

これはスタートですが、正確には私が探しているものではありません。ウィンドウのサイズを変更すると、「元の」表示スペースが左上に表示され、新しく表示されるオブジェクトはすべて元の長方形の下または右に表示されます。

このサイズ変更の方法は醜いと思います。ある解像度で画面の中央に何かを置くと、それは別の解像度でも中央にとどまるはずです。これが起こるような方法でビューをどのように中心に置くのですか?

これの素晴らしい例は、minecraftです。ミニクラフトでは、ウィンドウのサイズを変更すると、「元の」ビューポートが非常に中央にあり、目に見えるオブジェクトがエッジの周りに表示されます。これをSFMLでどのように再現できますか?

答えて

1

だけanother constructorを使用して、現在のビューの中心を渡す:

if (event.type == sf::Event::Resized) 
{ 
    // update the view to the new size of the window and keep the center 
    window.setView(sf::View(window.getView().getCenter(), sf::Vector2f((float)event.size.width, (float)event.size.height))); 
} 
関連する問題