4

ねえ、私は box2d と SFML を統合しています。box2D には、SFML と同じ奇数のミラー化された Y 軸座標系があります。つまり、すべてが上下逆さまにレンダリングされます。ウィンドウのレンダリング コンテンツを単純にミラーリングする関数や短い量のコードはありますか?

私はこれを助けるために sf::view に何かを入れることができると思っています...

ボディの寸法/位置に影響を与えずに、レンダリング目的でY軸を簡単に反転するにはどうすればよいですか?

4

3 に答える 3

2

box2d とは何かわかりませんが、openGL を使用して Y 軸を反転させたい場合は、次のように投影行列に負の倍率を適用しました。

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glScalef(1.0f, -1.0f, 1.0f);

openGL から独立して実行したい場合は、単純に sf::View に負の x 値を適用します。

于 2011-07-28T13:18:41.413 に答える
2

モデルが従来の座標系 (正の y 点が上) を使用しているように聞こえますが、それを画面座標系 (正の y 点が下) に変換する必要があります。

モデル/Box2D 位置データを任意の sf::Drawable にコピーする場合、モデルとスクリーン座標系の間で手動で変換します:

b2Vec2 position = body->GetPosition();

sprite.SetPosition( position.x, window.GetHeight() - position.y )

これはラッパー クラスまたは関数で非表示にできますが、レンダリング前の変換としてモデルとレンダラーの間に配置する必要があります。SFML でそれを設定する場所がわかりません。

Box2D には必要な座標系があると思います。画面ではなく、モデル (0、-10) に基づいて重力ベクトルを設定するだけです。

于 2011-08-05T19:19:58.443 に答える