我正在尝试使用OpenVDB &查看器我只是想看到openvdb文件使用查看器。查看器的一些函数使用opengl函数并返回opengl错误。
下面是ovenvdb查看器的执行和错误信息。
C:UsersuserDocumentsVisual Studio 2013Projectsopenvdb_testDebug>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:UsersuserDocumentsVisual Studio 2013Projectsopenvdb_testDebug>
这是openvdb查看器的RenderModules中显示错误消息的功能。我添加了一些行用于调试。
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 %dn", err);
throw "Error: Unable to upload vertex buffer data";
}
glBindBuffer(GL_ARRAY_BUFFER, 0);
}
我知道opengl错误#1281意味着size的值无效。但是,顶点的大小不是负值,其他参数对我来说也很好。
我错过什么了吗?
刚刚更改
if (glIsBuffer(mVertexBuffer) == GL_FALSE) throw "Error: Unable to create vertex buffer";
do {
glIsBuffer(mVertexBuffer);
} while (glGetError() != GL_NO_ERROR);
对于我来说,顶点和颜色失败了,现在它工作了。