2010-06-30 2 views
3

나는이처럼 내 VBO를 만들 : 다음 이로 인해 메모리 누수가 발생합니까?

glGenBuffersARB(1,&polyvbo); 

    glBindBufferARB(GL_ARRAY_BUFFER_ARB,polyvbo); 
    glBufferDataARB(GL_ARRAY_BUFFER_ARB,sizeof(GLfloat) * tempvct.size(),&tempvct[0],GL_DYNAMIC_COPY); 

이를 업데이트 나는 그냥 같은 일을 수행

glBindBufferARB(GL_ARRAY_BUFFER_ARB,polyvbo); 
    glBufferDataARB(GL_ARRAY_BUFFER_ARB,sizeof(GLfloat) * tempvct.size(),&tempvct[0],GL_DYNAMIC_COPY); 

(말할 필요도없이, tempvct의 데이터가 변경)

I을 위의 코드가 메모리 누수를 일으키는 지 궁금합니다. vbo를 삭제하고 다시 생성해야합니까, 아니면 이전 버전과 업데이트를 자동으로 삭제합니까?

감사

답변

4

버퍼가 재 할당되지 않기 때문에 메모리 누수가 발생하지 않습니다.

하지만 glBufferSubData()을 사용하지 않으시겠습니까? 아마 훨씬 빨라질 것이고 기본적으로 같은 일을 할 것입니다.

0

내가 구글에 "glBufferDataARB"를 입력하고 첫 번째 히트로 이것을 발견했습니다는 :

http://www.songho.ca/opengl/gl_vbo.html

당신이 그것을 읽으십시오. 내가 이해할 때 glGenBuffersARB는 버퍼 객체를 만들고 glDeleteBuffersARB는 그것들을 파괴하므로 다른 두 함수는 할당을 수정하지 않고 기존 버퍼를 단순히 재사용합니다.

관련 문제