0
異なるサイズの新しいVBOを作成するために、アプリケーションでVBOを動的に削除しようとしています。しかし、私のプログラムがそれらを削除しようとすると、セグメンテーション違反でクラッシュします。以下は glDeleteBuffersARBの呼び出し結果がsegfaultになる
はVBOを割り当て、私のコードです:glBindBufferARB(GL_ARRAY_BUFFER, _vertexBufferID);
glBufferSubDataARB(GL_ARRAY_BUFFER,
_pMetadata->vertexSubBufferOffset(),
_pMetadata->vertexSubBufferSize(),
&row[0]); // row is a vector<float>
、他の場所のコードで、私はVBOを削除しよう:
glGenBuffersARB(1, &_vertexBufferID);
glBindBufferARB(GL_ARRAY_BUFFER, _vertexBufferID);
glBufferDataARB(GL_ARRAY_BUFFER,
_pMetadata->vertexBufferSize(),
NULL,
GL_STATIC_DRAW)
データは、定期的に以下のコードでVBOに追加されますそのような:
glDeleteBuffersARB(1, &_vertexBufferID)
そして、それは私がセグメンテーションフォールトを受け取り、そのライン上にあります。私は、正しいOpenGLコンテキストが削除時にアクティブであることを保証しました。
ところで、サイズを変更するためにVBOを削除するだけで、別のサイズの 'glBufferData'を呼び出すだけで十分です。しかし、あなたの実際のアプリケーションはもっと複雑かもしれません。 –
valgrindのようにチェックしたメモリを実行できますか? –
@ChristianRauこれは実際には完全に機能しますが、私はまだこの削除業務について興味があります。 –