非常に大きなポイント クラウド (700 mln ポイント) を視覚化しようとしていますが、glDrawArrays
オンコール デバッガーがアクセス違反の書き込み場所の例外をスローします。同じコードを使用して小さな雲 (100 mln) をレンダリングしていますが、すべて正常に動作します。また、データを保存するのに十分な RAM メモリ (32GB) があります。
std::vector<Point3D<float>>
Point3D がある場所に使用している点群を保存するには
template <class T>
union Point3D
{
T data[3];
struct{
T x;
T y;
T z;
};
}
頂点配列とバッファの初期化:
glBindVertexArray(pxCloudHeader.uiVBA);
glBindBuffer(GL_ARRAY_BUFFER, pxCloudHeader.xVBOs.uiVBO_XYZ);
glBufferData(GL_ARRAY_BUFFER, pxCloudHeader.iPointsCount * sizeof(GLfloat) * 3, &p3DfXYZ->data[0], GL_STREAM_DRAW);
glVertexAttribPointer((GLuint)0, 3, GL_FLOAT, GL_FALSE, 0, 0);
glEnableVertexAttribArray(0);
glBindVertexArray(0);
抽選会:
glBindVertexArray(pxCloudHeader.uiVBA);
glDrawArrays(GL_POINTS, 0, pxCloudHeader.iPointsCount); // here exception is thrown
glBindVertexArray(0);
OpenGL エラーがスローされたかどうかも確認しましたが、何も見つかりませんでした。