0

私は2D用のOpenglを学んでいます(特にJava slick2Dライブラリを使用していますが、それはこの質問の要因ではないかもしれません)。たとえば、世界座標を画面 (ビュー) 座標に変換するために、新しい変換行列を変更してプッシュできることを発見しました。

これを使用してビューをズームし、オブジェクト間の距離を広げたいのですが、これが完了したら、HUD のように画面座標で画像と形状をペイントしたいと考えています。基本的に、座標を変更したいのですが、グラフィックスは同じままにして、各スケールでカスタム イメージをレンダリングできるようにします。

すべての座標を手動で計算する代わりに、巧妙な変換または OpenGL オプションを使用してこれを行うことはできますか?

4

2 に答える 2

5
  1. 色と深度のバッファをクリアする

  2. ズームされた 2D/3D レンダリングの投影/モデルビュー マトリックスを設定する

  3. 深度テストを有効にする

  4. ズームされた 2D/3D シーンをレンダリングする

  5. 2D オーバーレイの投影/モデル ビューをリセットします

  6. 深度テストを無効にする

  7. 2D オーバーレイを描画

  8. 繰り返す

于 2013-04-19T16:15:26.853 に答える
1

わかりました、2 つの別々の射影を使用する必要があります。

1.- オブジェクトが正しいシーン位置に描画されるように、ワールド座標をスケーリングします。

    g.pushTransform();

    // Always zoom in the center of the screen.
    g.translate(resolution.getX(), resolution.getY());
    g.scale(scale, scale);

    // Move the view
    g.translate(-view.getX(), -view.getY());

2.- 新しいマトリックスをプッシュしてオブジェクトを描画し、スケール変換を反転して、オブジェクトのグラフィックがスケールによって変化しないようにします。

    g.pushTransform();

    // Center on the current object.
    g.translate(pos.x, pos.y);

    // Undo scaling of graphics!
    g.scale(1.0f/scale, 1.0f/scale);
于 2013-04-19T23:44:34.563 に答える