リスト内の項目のインデックスを見つける最速の方法を知りたいです。私が知りたい理由は、私は XNA レンダーを作成しているのですが、頂点バッファーのみを使用したときに大規模なモデルでメモリ不足の例外が発生し始めたため、インデックス バッファー システムを実装したためです。私の問題は、すべての Vector3 を含むリストを継続的にスキャンして、インデックス バッファーに次に配置したいもののインデックスを取得する必要があることです。現在、次のようなインデックスをスキャンしています。
for (int i = 1; i < circleVect.Length; i++)
{
indices.Add(vertices.FindIndex(v3 => v3 == circleVect[i]));
indices.Add(vertices.FindIndex(v3 => v3 == circleVect[i - 1]));
indices.Add(vertices.FindIndex(v3 => v3 == middle));
}
これは、かなり遅いという事実を除いて、正常に機能します。1 つの円柱を計算するのに約 1 秒かかり、私の大規模なモデルには 70 000 を超える円柱があります。そのため、大きなモデルをロードしている間、ロード画面が 20 分以上表示されていましたが、まだ完了していません。残念ながら、これは単に受け入れられません。小さいモデルをロードしようとすると、5 分以上かかりますが、インデックス化されていないローダーはわずか 1 秒ほどしかかかりませんでした。
私は C# の正式なトレーニングはまったく受けておらず、XNA のトレーニングもほとんど受けていないため、これはおそらくインデックスを計算する非常に非効率的な方法であることを知っています。
PS。必要に応じてリストを配列に変更できますが、システム メモリに負荷がかかる可能性があり (例外が発生する)、かなりのコーディングが必要になるため、これは最後の手段となります。