openvdb viewer& OpenGL的

时间:2016-09-06 10:18:32

标签: opengl openvdb

我正在尝试使用OpenVDB&查看器我只想使用查看器查看openvdb文件。 一些查看器函数使用opengl函数并返回opengl错误。

下面是执行ovenvdb查看器及其错误消息。

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>

这是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 %d\n", err);
        throw "Error: Unable to upload vertex buffer data";
    }

    glBindBuffer(GL_ARRAY_BUFFER, 0);
}

我知道opengl错误#1281意味着大小无效。 但是,顶点的大小不是负值,而且其他args看起来也不错。

我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

刚刚改变

if (glIsBuffer(mVertexBuffer) == GL_FALSE) throw "Error: Unable to create vertex buffer";

通过

do {
    glIsBuffer(mVertexBuffer);
} while (glGetError() != GL_NO_ERROR);

对我而言,顶点和颜色都失败了,现在它可以正常工作。