次のようなテクスチャを作成します。
//Create temp SDL_Surface
SDL_Surface* surface = IMG_Load(this->path.c_str());
//If we successfully loaded an image
if (surface)
{
SDL_DisplayFormatAlpha(surface);
bounds = GameRectangle(surface->w, surface->h);
GLuint object(0);
glGenTextures(1, &object);
glBindTexture(GL_TEXTURE_2D, object);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, surface->w, surface->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, surface->pixels);
SDL_FreeSurface(surface);
return object;
}
glDeleteTextures()はVRAMを適切に解放しますが、システムRAMは残り、ゲームがクラッシュするまで蓄積されます。
SDL_Surfaceに配置しましたが、表面メモリが解放されていないようです。
何か案は?