問題タブ [spritebatch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1855 参照

shader - Libgdx スプライト バッチのシェーダーを変更する

スプライト バッチのシェーダーを変更し、新しいメッシュを使用せずにカスタム シェーダーを作成する方法があるかどうか疑問に思っていました。

0 投票する
1 に答える
1022 参照

c# - spriteBatch が Null です

私はゲームを作成しています。現時点では、greenpaddle、ball、および Game1 の 3 つのクラスがあります。

自分のゲームを実行すると、デバッガーが自分にホップダウンし、NullReferenceException UnhandledspriteBatch.Begin(); と表示されます。これは私の Game1.cs です:

何が悪いのかわからない、これは私に起こったことがない.

0 投票する
2 に答える
645 参照

c# - 新しい SpriteBatch.Begin 関数を書くことは可能ですか?

等角図でゲームを作成しています。私は現在、2 つのマトリックスを使用して非常に効果的に機能している構造を持っています。ただし、これには追加のメンバーと関数が必要ですが、それらは必要ありません。関数の 1 つはSpriteBatch.Begin、変換行列をパラメーターとして受け入れます。SpriteBatch.Begin2 つの行列 (カメラ変換用とアイソメトリック変換用) を受け入れる新しい関数を書きたいと思います。実際のSpriteBatch.Begin機能がどのように機能するかはわかりませんし、利用可能なソースがあるかどうかもわかりません。誰にもアイデアはありますか?

0 投票する
1 に答える
93 参照

c# - SpriteBatch で静的 Texture2D を使用するとパフォーマンスが向上しますか?

私のゲームにはたくさんの (同じ見た目の) ゾンビが登場します。

SpriteBatch新しいテクスチャをロードする必要がないように、テクスチャを静的にすることは良い考えですか?

ゾンビ リスト全体を調べて、位置を変更するだけで、同じ呼び出しですべてのゾンビを描画します。SpriteBatchそれを取得しますか?毎回まったく同じテクスチャですか?不利になる可能性があるのはどこですか?

0 投票する
1 に答える
1545 参照

c# - XNA 4.0 1 つのバッチで複数のエフェクトを使用する

XNA 4.0 用のグラフィック エンジンの作業を行っていますが、解決策が見つからない問題に遭遇しました。現在、シェーダーを使用して光の効果を実装しようとしています。グラフィック エンジンもパーティクル エンジンで構成されているため、少なくともパフォーマンスを考慮することは非常に重要です。これら2つの組み合わせが問題を引き起こします。

まず第一に、私は多くの読書と調査を行ってきましたが、私が理解していることから、ドローコールが少ないほどパフォーマンスが向上します。ドロー コールとは、スプライト バッチが実際のジオメトリとテクスチャを GPU に送信するタイミングを意味します。したがって、私は1 つのバッチ内でできるだけ多くを描画しようとしています。

そして今、問題が発生します。エンジンの描画メソッドには 2 つのオーバーロードがあります。

最初のオーバーロードは、デフォルト シェーダーを使用して通常のテクスチャを描画するだけです。2 番目のオーバーロードは、別のシェーダーを使用するライトを描画します。私がやりたいことは次のとおりです。

ただし、SpriteBatch は一度に複数のシェーダーをサポートしていないため、代わりにエフェクト パスを使用してこれを実行しようとしました。

spriteBatch.Draw() が呼び出されたときにシェーダーが使用されず、代わりに spriteBatch.End() が呼び出されたときに、これも機能しませんでした。したがって、上記のコードは、最後に適用したパスですべてをレンダリングしました。

私の 3 番目の試みは、2 つの SpriteBatches を使用することでした。

これは実際には機能しましたが、レイヤーの深さが完全に台無しになりました。これは、spriteBatchLight.End() が最後に呼び出されるため、それほど奇妙ではなく、spriteBatchColor が描画したすべてのものの上に常に描画されます。

SpriteSortMode を SpriteSortMode.Immediate に設定できることはわかっていますが、このモードではすべてが直接描画されるため、パフォーマンスが大幅に低下します。この場合、パフォーマンスが非常に重要であるため、GPU への描画呼び出しをできるだけ少なくして最適化したいため、SpriteSortMode.Immediate はオプションではありません。

だから、私の質問は:

1 つのバッチ内で2 つの異なるエフェクト/テクニック/パスを使用する方法はありますか? または、2 つの異なる SpriteBatches を使用して、最終的な描画を行うときにそれらを組み合わせて、レイヤーの深さが台無しにならないようにする方法はありますか?

0 投票する
1 に答える
339 参照

libgdx - LibGDX スプライト 実行時に新しいスプライトをバッチ処理して追加する

私は libgdx エンジンを扱う新しいプログラマーで、スプライトのバッチ処理について疑問に思っていました。具体的には、プログラムのライフサイクル中に描画するためにスプライトをバッチに追加する方法。これまでのところ、スプライトのすべての例では、次のようなコードを使用しています batch.begin(); sprite.draw(batch); batch.end(); 。各スプライト .draw をバッチで呼び出す必要があるため、さまざまな数のスプライトを描画する方法が不明です...事前に感謝します説明!