У меня есть этот код GL:
GLuint newId;
gpu->glCreateBuffers(1, &newId);
gpu->glNamedBufferStorage(newId, static_cast<GLsizei>(newCapacity), nullptr, GL_DYNAMIC_STORAGE_BIT);
GLint s1, s2;
gpu->glGetNamedBufferParameteriv(id_, GL_BUFFER_SIZE, &s1);
gpu->glGetNamedBufferParameteriv(newId, GL_BUFFER_SIZE, &s2);
qDebug() << "SZ" << s1 << s2;
gpu->glGetNamedBufferParameteriv(id_, GL_BUFFER_MAPPED, &s1);
gpu->glGetNamedBufferParameteriv(newId, GL_BUFFER_MAPPED, &s2);
qDebug() << "BA" << s1 << s2;
qDebug() << "CA" << capacity_ << newCapacity;
gpu->glCopyNamedBufferSubData(id_, newId, 0, 0, static_cast<GLsizei>(capacity_));
И по какой-то причине я не понимаю, команда копирования не работает. Я получаю следующий результат:
SZ 8192 16384
BA 0 0
CA 8192 16384
QOpenGLDebugMessage("APISource", 2130, "glCopyNamedBufferSubData failed because a referenced or provided buffer range (depending on the operation) was: larger than the buffer's size; incorrectly intersected with another range; or was otherwise invalid (GL_INVALID_VALUE)", "HighSeverity", "ErrorType")
Есть идеи, что происходит? Я работаю над графическим процессором RX 5700.
РЕДАКТИРОВАТЬ: просто попробовал использовать glCopyBufferSubData, который работает.