私は巨大なポイントクラウド(〜150M)をレンダリングしようとしていますが、OpenGLはその一部(〜52M)しかレンダリングしません。小さなデータセット(< 40M)をレンダリングすると、すべて正常に動作します。私は単一のVBOを使用しています。複数のVBOを使用すると、ポイントがレンダリングされますが、レンダリングは非常に遅くなります。私の要素のサイズは44バイトで、GPUには3GBのメモリがあります。これは約70Mポイントには十分であるはずですが、私は複数のVBOで100Mポイントをレンダリングすることができます。 私が気づいていないVBOごとにOpenGL固有の制限はありますか?。glDrawArraysはポイントクラウド全体をレンダリングしません
それはあなたのシステムの一部のように見えますglBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, cloud.size() * sizeof(Point), cloud.data(), GL_STATIC_DRAW);
// lot of other code
glDrawArrays(GL_POINTS, 0, cloud.size());
フレームごとにglBufferDataを呼び出すのではないですか? –
'glBufferData()'がエラー状態を 'GL_OUT_OF_MEMORY'に設定していないことを確認していますか? – genpfault
私はそうではありません。これは疑似コードです。実際には、データが変更されたときだけバッファを更新するためにダーティフラグを使用します。 – mitjap