【Xbox360】 XNA Game Studio その4 【C#】at GAMEDEV【Xbox360】 XNA Game Studio その4 【C#】 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト684:ひげねこ ◆oxtErU/kVM 08/03/02 21:16:04 75eB5Z/y 現状、こちらで把握しているなかでボトルネックとなっているのはマネージサイドによるメモリメモリアクセスです。 例えば、簡単なパーティクル表示で、ひとつのパーティクルは単純なテクスチャなしの四角形(2つの三角形ポリゴン、頂点にはVector3とColor)を表示したとします。 パーティクルの動きはあらかじめ設定された速度で動き画面端に届いたら移動量を反転するというものです。このプログラムを5000個のパーティクルを表示したときに それぞれに掛かった時間を計測すると パーティクルの移動処理に1ms マネージメモリに頂点を書き出す部分が4ms そして、SetDataを呼んでDrawPrimitiveを呼び出すのに掛かった時間が0.14ms程度です。 ここから、頂点データのコピーに掛かる時間をメモリ帯域と、ユーザーメモリからカーネルメモリへの変更コストを差し引くと、マネージサイドとネイティブサイドの オーバーヘッドは非常に小さくなります。ですから、このオーバーヘッド部分を隠すためにマルチスレッド化しても効果が期待できないというのが現状です 次にレンダーステートのキャッシングについてですが、レンダーステートがGraphicsDeviceのみによって変更されるのなら問題は無いのですが、 レンダーステートはそれ以外にもネイティブサイド内のEffectによっても変更されます。Effectによるステート変更をマネージサイドのGraphicsDeviceと 辻褄を合わせるためにはせっかくネイティブサイドで動いているEffect実装部分をマネージサイドで実装しないといけません。そうなると、 今度はマネードサイドのEffect実装コードがボトルネックになり、ステートキャッシングによる最適化を相殺どころか逆に遅くなってしまいます。 更に続く 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch