1

2D 空間スクロール シューティング ゲームの背景を描画する必要があります。星の 3 つのレイヤーを実装する必要があります。背景に 1 つの遠くの星雲 (非常にゆっくりと移動)、1 つの遠くの星 (ゆっくりと移動) のレイヤー、および他の 2 つの上にある近くの星 (通常の動き) の 1 つのレイヤーです。

私が最初にこれを試した方法は、星の透明な png である 320 x 480 の 3 つのテクスチャを使用することでした。GL_BLEND と SRC_ALPHA、ONE_MINUS_SRC_ALPHA を使用しました。

結果は 3GS でも良くありませんでした。第 1 世代のデバイスでは FPS が 40..50 に低下したため、これは間違った方法で行っていると思います。

GL_BLEND を無効にすると、第 1 世代のデバイスでもすべてが正常に機能し、FPS は再び 60 に戻ります...大きな透明なテクスチャをベルンドしようとしているのは事実に違いありません。

問題は、他の方法でそれを行う方法がわからないことです...

不透明なテクスチャのように最初の星雲だけを描画してから、小さな点が画面上を移動する中央および上部の星のレイヤーをエミュレートする必要がありますか?

ブレンディングの問題に他のアプローチはありますか? レンダリングプロセスを高速化するにはどうすればよいですか? 答えは 1 つの大きなテクスチャ (タイルセット) ですか?

ここで立ち往生していて出られないので助けてください。

4

3 に答える 3

5

星をどのように見せたいかわかりませんが、 を使用GL_POINTSしてテクスチャからジオメトリに星を移動したり、上の 2 つのレイヤーをジオメトリのレイヤーに置き換えDrawElementsたりすることをお勧めします。を使用してDrawArraysポイントを操作し、ポイントのレンダリングを変更できます。 PointSizePointSizePointerOESPointParameter

于 2009-10-27T01:34:27.167 に答える
3

マルチテクスチャリングを使用して、速度が向上するかどうかを確認することをお勧めします。各マルチテクスチャ ステージには固有の変換マトリックスを割り当てることができるため、各レイヤーを異なる速度で変換できるはずです。

すべての iPhone モデルが 2 つのテクスチャ ステージをサポートしていると思いますので、2 つのレイヤーを 1 つのドロー コールに結合できるはずです。3 番目のレイヤーのブレンドに頼る必要があるかもしれません。

また、アルファテストはアルファブレンディングよりも高速である可能性があることに注意してください。

幸運を!

于 2009-10-26T23:08:47.083 に答える
1

後ろの星雲は確実に不透明でなければなりません。他のすべてがその上に描画されており、その背後にあるのは黒だけだと思います. また、プライドアウトにはポイントがあります。星のレイヤーが実質的に 1 ビットのアルファを持つことができると仮定すると、それは間違いなく試すことができます。それができない場合、Harald が言及している GL_POINTS テクニックも同様に機能します。

于 2009-10-27T03:52:12.983 に答える