libertar memória num programa em OpenGL

MPalhas

Power Member
tenho um programa que usa OpenGL, e que usa a função glutMainLoop() para actualizar a janela constantemente. o código openGL foi fornecido pelo professor para o trabalho, e nós apenas temos que fazer as funções que calculam as alterações na matriz que irá ser mostrada na janela.

só que para esta fase tive que usar memória dinâmica, e tenho portanto que fazer free() dessa memória no final do programa. só que ao fechar a janela do openGL, o que estiver depois do glutMainLoop já não chega a ser executado. também não posso obviamente fazer o free antes disso, pois nessa altura ainda preciso dos dados em memória. como faço então para a memória ser libertada?
 
nunca "programei com opengl", mas parece-me que serà obvio existir uma funcao da api que seja chamada quando é terminada a janela, talvez glitdestroywindow.

Tal como disse não faço ideia, mas tenta ir por aí...
Cumps

Edit: acho que essa funcao não é...
 
Última edição:
Acho que é glutCloseFunc(void( *callback )( void ));

Implementas o callback e deve funcionar. :)

era isso mesmo obrigado :D

mas com isso surgiu outro problema. recebo este warning ao compilar:

display.c:103: warning: implicit declaration of function ‘glutCloseFunc’


mas aparentemente compila e corre correctamente (parece-me que faz os frees correctamente, inclusive ja fiz um printf la no meio e ele funcionou).

o código é este, no fim da função main:

Código:
/* Definir qual é a função que actualiza a janela */ 
    glutDisplayFunc(display); 
    glutIdleFunc(display); 
     
    /* Definir a funcao chamada ao fechar a janela */ 
    glutCloseFunc(cleanUp); 
 
    glutMainLoop(); 
    return 0;

como disse, aparentemente funciona, mas uma das regras para entregar o trabalho é compilar sem warnings (usando a flag -Wall), por isso tenho k resolver isto de alguma forma. alguma dica?
 
Back
Topo