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 é...
era isso mesmo obrigado 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?