openvdb viewer & opengl
Я пытаюсь использовать OpenVDB & Viewer, я просто хочу увидеть файл OpenVDB с помощью Viewer. Некоторые функции просмотра используют функции opengl и возвращают ошибку opengl.
Ниже приведено выполнение средства просмотра vvdb и его сообщения об ошибках.
C:\Users\user\Documents\Visual Studio 2013\Projects\openvdb_test\Debug>openvdb_test.exe armadillo.vd
b -i
ls_armadillo (1276 x 1519 x 1160 voxels)
Glew init (Windows)
INFO vertex sizes 2934312
INFO sizeof(GLfloat) 4
error genvertexbuffer 1281
openvdb_test.exe: Error: Unable to upload vertex buffer data
C:\Users\user\Documents\Visual Studio 2013\Projects\openvdb_test\Debug>
И это функция в RenderModules средства просмотра openvdb, которая показывает сообщение об ошибке. Я добавил несколько строк для отладки.
BufferObject::genVertexBuffer(const std::vector<GLfloat>& v)
{
if (glIsBuffer(mVertexBuffer) == GL_TRUE) glDeleteBuffers(1, &mVertexBuffer);
glGenBuffers(1, &mVertexBuffer);
glBindBuffer(GL_ARRAY_BUFFER, mVertexBuffer);
if (glIsBuffer(mVertexBuffer) == GL_FALSE) throw "Error: Unable to create vertex buffer";
printf("INFO vertex sizes %d \n", v.size());
printf("INFO sizeof(GLfloat) %d \n", sizeof(GLfloat));
int size = sizeof(GLfloat) * v.size();
glBufferData(GL_ARRAY_BUFFER, size, &v[0], GL_STATIC_DRAW);
GLenum err=glGetError();
if (GL_NO_ERROR != err)
{
printf("error genvertexbuffer %d\n", err);
throw "Error: Unable to upload vertex buffer data";
}
glBindBuffer(GL_ARRAY_BUFFER, 0);
}
Я знаю, что ошибка opengl #1281 означает недопустимое значение размера. Но размер вершин не является отрицательным значением, а также другие аргументы выглядят хорошо для меня.
Я что-то пропустил?
1 ответ
Решение
Только что изменился
if (glIsBuffer(mVertexBuffer) == GL_FALSE) throw "Error: Unable to create vertex buffer";
от
do {
glIsBuffer(mVertexBuffer);
} while (glGetError() != GL_NO_ERROR);
Для меня это не удалось для вершины и цвета, теперь это работает.