私のxnaコードfor Windows phone 7のDrawing部分で、数秒後に発生するパフォーマンスの問題を探しています。どのようにSpriteBatch.Beginを呼び出して何かを描画するのがベストプラクティスですか?各クラスのスプライト(各クラスでプレーヤー、背景、背景オブジェクトなどを描画するとき)を呼び出すか、最初の呼び出しを行いますか?>すべてのサブクラスですべてを描画しますか?SpriteBatch.Begin()/ End()を呼び出す頻度。
5
A
答えて
2
Begin()はスプライトレンダリングのためのデバイスの準備を意味し、End()は以前の状態への復元を意味するため、必要以上に使用しないでください。これはBegin()のいくつかのフラグによって変化する可能性があります。状態を変更したくない場合は、手動でいくつかの状態を設定する必要があるため、コードが複雑になる可能性があります。
デバイスの状態の変更が遅い場合があります。必要でない場合は実行しないようにする必要があります。また、何かを妨害する可能性があるため、SpriteBatchにないものをレンダリングする場合はEnd()すべてのスプライトに対して一度呼び出す必要があるスプライトをレンダリングしています。
End()を呼び出して前のスプライトに表示されない状態を変更しないようにするには、End()ではなくFlush()を呼び出す必要があります。これにより、キューに入れられたスプライトが現在の変換とデバイス状態でレンダリングされますが、状態はそのまま残ります。 End()関数は、Flush()を呼び出し、Begin()で設定した特定の状態をリセットします。
2
パフォーマンス上のベストなことは、Draw()ごとにbegin/endを1回だけ呼び出すことです。これにより、バッチ内のすべてのスプライトがグラフィックカードによって同時に処理されます。必要に応じて複数のスプライトバッチを使用する必要があります。あなただけの特定のスプライトにエフェクトを適用したいではなく、他の人
- :あなたがする必要があるかもしれませんときの例としては、
誰でも複数のスプライトバッチ(begin-> end)の他の理由が考えられますか?
関連する問題
- 1. GCM RegistrationIntentServiceを呼び出す頻度
- 2. SpriteBatch.begin/endにShapeRenderer.begin/endをネストする
- 3. touchesMoved-methodの呼び出し頻度を増やす
- 4. SpriteBatch.BeginおよびSpriteBatch.End
- 5. viewDidLoadはどのくらいの頻度で呼び出されますか?
- 6. メソッドを一度呼び出す方法
- 7. サーバから関数を頻繁に呼び出す方法は?
- 8. 頻繁に呼び出すCGRectMakeのパフォーマンスですか?
- 9. Node.js HTTP:リクエスト 'end'イベントが呼び出されない
- 10. end割り込みが呼び出されていないevrytime
- 11. 頻度テーブル内の行サブセットの頻度
- 12. getFromLocation()に経度と緯度を呼び出す?
- 13. 何度も何度も関数を呼び出す
- 14. Core Graphics- drawRect:頻繁に呼び出されない
- 15. 私のHTMLはどのくらいの頻度で関数を呼び出しますか?
- 16. 生産のMongoDBでインデックスを作成する頻度と頻度
- 17. Socket.AcceptAsyncが必要とし、 'End'メソッド呼び出しがあります
- 18. オペレーティングシステムでデッドロックが発生する頻度(発生する頻度)
- 19. 関数が呼び出され、何度(角度JS)
- 20. Rで累積頻度と相対頻度で頻度表を作成する方法
- 21. realloc()を何度か呼び出すとCプログラムがクラッシュする
- 22. MFC APPで、 "InitLstA"から "LoadLibraryA"を呼び出すと、何度も "InitInstance"が呼び出されます。
- 23. メソッド/関数を2回呼び出す変数に保存して一度呼び出す
- 24. WaveInEventサンプルイベントの頻度
- 25. Pythonプロット頻度fft.rfft
- 26. @Scheduleメソッドを一度に1回だけ呼び出す方法
- 27. 角度ui-router:state.go({notify:false})で$ stateChangeStartを呼び出す方法は?
- 28. iOS:一度だけメソッドを呼び出す
- 29. 角度コントローラのコードを間隔で呼び出す
- 30. コントローラから角度サービスメソッドを呼び出す方法は?
Beginのオーバーロードの一覧は次のとおりです。http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.spritebatch.begin.aspxここでは、カスタムエフェクトまたは別の変換マトリックスを渡す場合は、別の呼び出しを行う必要があります。 –
こんにちは、特定のスプライトにある画像のスクリーンショットを撮ることができませんでしたが、別のスプライトでスクリーンショットを撮ることができました。あらゆるアイデア、なぜこれが起こったのでしょうか? – nagavamsikrishna
@salsabear、それは新しい質問のための材料のように聞こえる。質問にコードを含める場合は、必ずリレート部分のみを含めるようにしてください。 –