Ես փորձում եմ դինամիկ կերպով ջնջել VBO-ները իմ հավելվածում, որպեսզի ստեղծեմ նոր VBO-ներ, որոնք ունեն տարբեր չափսեր: Այնուամենայնիվ, երբ իմ ծրագիրը փորձում է ջնջել դրանք, այն խափանում է հատվածավորման սխալով:
Ստորև բերված է իմ կոդը, որը հատկացնում է VBO-ն.
glGenBuffersARB(1, &_vertexBufferID);
glBindBufferARB(GL_ARRAY_BUFFER, _vertexBufferID);
glBufferDataARB(GL_ARRAY_BUFFER,
_pMetadata->vertexBufferSize(),
NULL,
GL_STATIC_DRAW)
Տվյալները պարբերաբար ավելացվում են VBO-ին հետևյալ կոդով.
glBindBufferARB(GL_ARRAY_BUFFER, _vertexBufferID);
glBufferSubDataARB(GL_ARRAY_BUFFER,
_pMetadata->vertexSubBufferOffset(),
_pMetadata->vertexSubBufferSize(),
&row[0]); // row is a vector<float>
Եվ կոդի այլուր ես փորձում եմ ջնջել VBO-ն այսպես.
glDeleteBuffersARB(1, &_vertexBufferID)
Եվ հենց այդ գծում ես ստանում եմ հատվածավորման սխալ: Ես համոզվել եմ, որ ճիշտ OpenGL համատեքստն ակտիվ է ջնջման պահին: