ソースを参照

Fix a memory leak in the vertex array buffer handling.

legacy
Sam Hocevar sam 13年前
コミット
c5240f20e1
1個のファイルの変更11行の追加4行の削除
  1. +11
    -4
      src/scene.cpp

+ 11
- 4
src/scene.cpp ファイルの表示

@@ -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);


読み込み中…
キャンセル
保存