Parcourir la source

Fix a memory leak in the vertex array buffer handling.

legacy
Sam Hocevar sam il y a 13 ans
Parent
révision
c5240f20e1
1 fichiers modifiés avec 11 ajouts et 4 suppressions
  1. +11
    -4
      src/scene.cpp

+ 11
- 4
src/scene.cpp Voir le fichier

@@ -61,6 +61,9 @@ private:
int ntiles;
float angle;

#if LOL_EXPERIMENTAL
GLuint vao;
#endif
GLuint *bufs;
int nbufs;

@@ -82,6 +85,10 @@ Scene::Scene(float angle)

data->bufs = 0;
data->nbufs = 0;

#if LOL_EXPERIMENTAL
glGenVertexArrays(1, &data->vao);
#endif
}

Scene::~Scene()
@@ -89,6 +96,9 @@ Scene::~Scene()
/* FIXME: this must be done while the GL context is still active.
* Change the architecture to make sure of that. */
glDeleteBuffers(data->nbufs, data->bufs);
#if LOL_EXPERIMENTAL
glDeleteVertexArrays(1, &data->vao);
#endif
free(data->bufs);
delete data;
}
@@ -200,10 +210,7 @@ void Scene::Render() // XXX: rename to Blit()
}

#if LOL_EXPERIMENTAL
GLuint vao;

glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
glBindVertexArray(data->vao);
#else
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);


Chargement…
Annuler
Enregistrer