0

だから私はGPUと一緒にプログラミングするのは初めてで、LibGDXも非常に初めてです。私はゆっくりと道を進んでいますが、オブジェクトが描画される場所を変更する方法を理解するのに問題があります。

現在、レベル クラスに 1 つの描画呼び出しがあります。

// Update the camera.
// ------------------
_cameraRef.update();
_cameraRef.apply(Gdx.gl10);
_batchRef.setProjectionMatrix(_cameraRef.combined);

// Draw.
// -----
_batchRef.begin();
_player.draw(_batchRef);
_batchRef.end();

とてもシンプルです。プレーヤーは、x 座標と y 座標で描画されます。

ただし、私がやろうとしているのは、定数を掛けた x 座標と y 座標で彼を描画することです (ゲームの解像度に応じて、1、2、または 4 になります)。

したがって、(4, 8) で描画される代わりに、(8, 16) で描画されます。

基本的に、x 座標と y 座標から 2x または 4x の位置にすべてのオブジェクトを描画するようにバッチに指示する方法はありますか?

SpriteBatch::translate(x, y, z) が答えだと思うようですが、思い通りに動作させることができないようです。

どんな助けでも大歓迎です!

4

1 に答える 1

0

平行移動座標を乗算する GL メソッドはありません。これが本当にすべきことだと思う場合は、行列を float 配列として取得し、平行移動成分を掛けることができます。ただし、単に使用することはお勧めしませんtranslate(x*resolutionFactor, y*resolutionFactor, z*resolutionFactor)

多くの情報を提供していただけませんでしたが、DPI が 2 倍ほど大きいデバイス (Retina ディスプレイ) を扱うときに問題が発生していると思います。この場合、問題はおそらく「glOrtho」に起因します。このメソッドは主に 2D で画面座標系を定義するために使用され、スプライト描画では通常、上 = 左 = 0、下 = ビュー高さ、右 = ビュー幅に設定されます。これらの viewWidth と viewHeight は、おそらくフレーム バッファ自体から取得されたものであり、あなたのケースでは間違っています。このメソッドにアクセスできる場合は、Retina デバイスの幅と高さを分割するか、単にビューの幅と高さを使用して設定する必要があります。

于 2013-03-28T07:40:15.493 に答える