Hola campeón,
He estado revisando parte del código de War3D.
He encontrado lo que puede ser un "memory leak"
en el archivo texturas.cpp Después de hacer:
glTexImage2D(GL_TEXTURE_2D, 0, tipo, imagen->ancho,
imagen->largo, 0, tipo, GL_UNSIGNED_BYTE, imagen->dibujo);
deberías hacer:
free(imagen->dibujo);
ya que esos datos ya no sirven para nada. Cuando invocas
a glTexImage2D(), OpenGl se encarga de almacenar la
textura en su própio area de texturas (bien sea en
memoria de video o en memoria de sistema). Como
consecuencia de esto, en texturas.h te sobraría el
miembro:
GLubyte *dibujo;
Soy relativamente nuevo en OpenGL pero creo que esto
es como te comento. Si no fuese así te agradecería que
me lo rectificases. Al fin y al cabo yo estoy aprendiendo
ahora.
Un saludo.