ねえ、私は box2d と SFML を統合しています。box2D には、SFML と同じ奇数のミラー化された Y 軸座標系があります。つまり、すべてが上下逆さまにレンダリングされます。ウィンドウのレンダリング コンテンツを単純にミラーリングする関数や短い量のコードはありますか?
私はこれを助けるために sf::view に何かを入れることができると思っています...
ボディの寸法/位置に影響を与えずに、レンダリング目的でY軸を簡単に反転するにはどうすればよいですか?
ねえ、私は box2d と SFML を統合しています。box2D には、SFML と同じ奇数のミラー化された Y 軸座標系があります。つまり、すべてが上下逆さまにレンダリングされます。ウィンドウのレンダリング コンテンツを単純にミラーリングする関数や短い量のコードはありますか?
私はこれを助けるために sf::view に何かを入れることができると思っています...
ボディの寸法/位置に影響を与えずに、レンダリング目的でY軸を簡単に反転するにはどうすればよいですか?
box2d とは何かわかりませんが、openGL を使用して Y 軸を反転させたい場合は、次のように投影行列に負の倍率を適用しました。
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glScalef(1.0f, -1.0f, 1.0f);
openGL から独立して実行したい場合は、単純に sf::View に負の x 値を適用します。
モデルが従来の座標系 (正の y 点が上) を使用しているように聞こえますが、それを画面座標系 (正の y 点が下) に変換する必要があります。
モデル/Box2D 位置データを任意の sf::Drawable にコピーする場合、モデルとスクリーン座標系の間で手動で変換します:
b2Vec2 position = body->GetPosition();
sprite.SetPosition( position.x, window.GetHeight() - position.y )
これはラッパー クラスまたは関数で非表示にできますが、レンダリング前の変換としてモデルとレンダラーの間に配置する必要があります。SFML でそれを設定する場所がわかりません。
Box2D には必要な座標系があると思います。画面ではなく、モデル (0、-10) に基づいて重力ベクトルを設定するだけです。