4

libgdxを使用したレンダリングサイクルに問題があります。基本的に、領域を正方形のテクスチャで塗りつぶす必要があります。この領域の最後の部分は、テクスチャよりも小さいか、形状が異なる可能性があるため、任意の形のクワッドをレンダリングし、その上にテクスチャを叩き、不要な部分をカットします。

基本的にこれは私が描く必要のあるポリゴンの形です

これを行う方法に少し迷っています。これまでのところ、PolygonRegionとPolygonSpriteBatchがそれを行う可能性があることを確認しましたが、1つのオブジェクトでのみ使用する新しい重いオブジェクトをインスタンス化することには少し警戒しています。 。

代替手段はありますか?おそらくMeshクラスですが、確実にしたいと思います。

4

2 に答える 2

1

その目的でPolygonSpriteBatchをインスタンス化する場合、大きな問題にはなりません。オブジェクトには、主にバッファリングされたジオメトリのジオメトリデータが含まれています。もちろん、必要に応じてフラッシュまたは終了を呼び出す正しいレンダリング順序に注意する必要があります。

メッシュは別のオプションですが、頂点とテクスチャ座標を手動で提供する必要があるため、少し手間がかかる場合があります。

パフォーマンスの観点から、1つのスプライトのレンダリングはメッシュを使用するとわずかに高速になります。あなたの場合、違いがfpsに何らかの影響を与えるかどうかはわかりません。

編集:1つのオブジェクトのレンダリングにSpriteBatchを使用する場合は、多くのメモリを予約するデフォルトのコンストラクターを使用しないでください。

于 2012-12-07T19:52:16.517 に答える
1

Meshを使用して、必要な領域を正確に定義することをお勧めします。頂点ポイントを定義し、それらをテクスチャ座標にマッピングするのは少し面倒ですが、いくつかの高レベルAPI(* Batchビットなど)の下で何が起こっているかを知っておくとよいでしょう。さらに、* Batch APIは、単一のテクスチャを複数のオブジェクトにアップロードする重みを共有するように設計されています。これは、この場合には適用されないように思われます。(一方、Batchオブジェクトが少し「重い」場合でも、実際には問題にならない場合があります。)

考慮すべきもう1つのアプローチは、オブジェクトを正方形のメッシュとしてレンダリングすることですが、領域外のすべてのピクセルに対して透明なピクセルを使用してテクスチャを定義することです。(非正方形の形状はオフラインで知ることができ、動的ではないと思います。)

于 2012-12-07T22:26:18.003 に答える