このアプリケーションは、幾何学的座標の大きなstd :: vector <>を割り当てます
。これは、モデルを描画するために最終的にOpenGLに送信されるため、ベクトル(連続していることを意味します)である必要があります。
また、OpenGLは連続したデータを処理します。
ある時点で割り当てが失敗します。これは、メモリを予約するとstd::bad_alloc例外がスローされることを意味します。ただし、現時点ではまだ多くのメモリが空いています。
問題は、隣接するブロックを割り当てることができないことです。
したがって、最初の2つの質問は次のとおりです。
CRTがメモリを割り当てる方法を制御する方法はありますか?またはそれを最適化する方法(クレイジーなアイデア))。
おそらく、実行時に何らかのサイズのメモリのブロックを割り当てることができるかどうかを確認する方法があります(try / catchを使用しない)。
上記の問題は、この1つの大きなベクトルを複数のベクトルにフラグメント化し、それぞれに対してOpenGLを1回呼び出すことで部分的に解決されました。
ただし、それぞれの小さいベクトルのサイズを定義する方法にはまだ疑問があります。かなり小さいサイズのベクトルがたくさんある場合は、ほぼ確実にメモリに適合しますが、OpenGLの呼び出しが多くなり、視覚化が遅くなります。