Это вызывает утечку памяти? - PullRequest
3 голосов
/ 30 июня 2010

Я создаю свой 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 изменяются)

Мне просто интересно, вызывает ли вышесказанное утечку памяти. мне нужно удалить VBO и воссоздать его, или он автоматически удалит старый и обновит?

Спасибо

Ответы [ 3 ]

4 голосов
/ 30 июня 2010

Это не вызывает утечку памяти, потому что буфер не перераспределен.

Но почему бы не использовать glBufferSubData()?вероятно, это будет намного быстрее и в основном делает то же самое.

0 голосов
/ 30 июня 2010
0 голосов
/ 30 июня 2010

Я ввел "glBufferDataARB" в Google и обнаружил, что это первый хит:

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

Я предлагаю вам прочитать его.Насколько я понимаю, glGenBuffersARB создает объекты буфера, а glDeleteBuffersARB уничтожает их, поэтому две другие функции просто повторно используют существующий буфер без изменения его выделения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...