Есть структура «анимация» - тупо набор RGBA-кадров, есть класс - анимированная текстура, в котором загружаются все кадры в OpenGL и потом уже используются ID текстур. Проблема с очисткой изначальной анимации. Вот код конструктора:
AnimatedTexture::AnimatedTexture(const Animation& a)
{
realWidth = a.width;
realHeight = a.height;
frameCount = a.frameCount;
textureIDs = new GLuint[frameCount];
glGenTextures(frameCount, textureIDs);
for (int i = 0; i < frameCount; i++)
{
glBindTexture(GL_TEXTURE_2D, textureIDs[i]);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, a.frames[i].width, a.frames[i].height, 0, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, a.frames[i].data);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
//delete[] a.frames[i].data; //<- тут удаляется
}
for(int i = 0; i < frameCount; i++)
{
delete[] a.frames[i].data; //<- а тут нет 0_0
}
}
Программа работает корректно в обоих случаях, только в первом занимает 350 Мб (Анимация - 300 Мб без сжатия), а во втором - 700.
Пока проверял только на Gentoo x86_64.