OpenVDB를 사용하려고합니다 & 뷰어 저는 뷰어를 사용하여 openvdb 파일을보고 싶습니다. 일부 뷰어 함수는 OpenGL 함수를 사용하여 OpenGL 오류를 반환합니다.openvdb viewer & 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도 나에게 잘 들립니다.
나는 무엇인가 놓쳤는가?
이전 OpenGL 호출의 오류 값이 표시 될 수 있습니다. OpenGL 오류 "스택". 누적되었을 수있는 모든 오류를 검색하기 위해'GL_NO_ERROR'를 반환 할 때까지 루프에서'glGetError'를 호출해야합니다 (예, 사람들이 nitpick을 가지거나, 이전 OpenGL 버전의 클라이언트/서버 아키텍처 때문이거나, 그렇지 않은 경우 ; 어느 쪽이든 루프에서 호출해야합니다). 또한 이전에 glGetError를 호출해야합니다. oyu가 버퍼 이름 생성 또는 바인딩을 알고있는 경우 실패했을 수 있습니다. – datenwolf