У меня есть функция, которая загружает изображение / текст в мою игру. Я использую gluBuild2DMipmaps () для создания текстуры OpenGL с поверхности SDL. Проблема в том, что каждый раз, когда я вызываю эту функцию, даже если я загружаюто же изображение и связать его на той же текстуре, gluBuild2DMipmaps выделяет 0,5 МБ памяти, которая не освобождается, пока я не закрою программу.
Моя функция:
void Load_texture(const char * text, SDL_Color clr, int txtNum, const char* file, int ptsize, bool type){
if(type){
tmpfont = TTF_OpenFont(file, ptsize);
sText = TTF_RenderUTF8_Blended( tmpfont, text, clr );
TTF_CloseFont(tmpfont);
}
if(!type)sText = IMG_Load(file);
area[txtNum].x = 0;area[txtNum].y = 0;area[txtNum].w = sText->w;area[txtNum].h = sText->h;
glGenTextures(1, &texture[txtNum]);
glBindTexture(GL_TEXTURE_2D, texture[txtNum]);
gluBuild2DMipmaps( GL_TEXTURE_2D, GL_RGBA, sText->w, sText->h, GL_RGBA, GL_UNSIGNED_BYTE, sText->pixels );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_LINEAR_MIPMAP_LINEAR );
SDL_FreeSurface( sText );
}
Что можно сделать, чтобы освободить выделенную памятьот gluBuild2DMipmaps, потому что теперь моя игра использует почти 1 ГБ ОЗУ через минуту после запуска.