Aula Prática: Introdução à OpenGL Disciplina: Computação Gráfica Professora: Isabel Harb Manssour |
O objetivo desta aula aprender a utilizar a biblioteca OpenGL. Para isto, serão utilizadas as bibliotecas OpenGL, GLU e GLUT, de maneira que o programa fique portável e possa ser executado tanto no ambiente Windows como no ambiente Linux. Nas aulas práticas será utilizado o compilador free Dev-C++. Em princípio, tanto este compilador como a biblioteca GLUT já estão instalados no laboratório. Portanto, será explicado somente como utilizá-los. Para implementação de aplicações OpenGL na linguagem de programação C/C++ é necessário criar um projeto para linkar as bibliotecas. Clicando aqui, você pode obter o projeto, bem como o código fonte que será utilizado na aula de hoje. Para implementação de outras aplicações, é possível utilizar este mesmo projeto e remover o(s) programa(s) fonte(s) anterior(es) para incluir um novo programa fonte (veja a opção Add to project do menu Project). Para criar um novo projeto, basta selecionar a opção Novo-Projeto... do menu Arquivo. Na janela que é aberta é necessário selecionar a aba MultiMedia e o ícone da GLUT. Instruções de como criar um projeto em versões mais antigas do Dev-C++ estão disponíveis aqui. Inicialmente, verifique o conteúdo do programa fonte fornecido para tentar entender o seu conteúdo. Depois, compile e execute o programa que abrirá uma janela com fundo branco e um triângulo, conforme mostra a próxima figura. Observe atentamente o código para entender o seu funcionamento, considerando a estrutura básica de um programa OpenGL:
Agora altere o código fonte conforme descrito a seguir e, a cada alteração, compile e execute novamente o programa para verificar os resultados obtidos. Em caso de dúvida, consulte a professora ou o tuturial de introdução à OpenGL disponível em http://www.inf.pucrs.br/~manssour/OpenGL/Tutorial.html.
Como fazer para interagir com o programa sem que seja necessário compilar o
código cada vez que o objeto, por exemplo, é trocado de lugar? Neste caso, utiliza-se uma
função callback para gerenciar eventos do teclado e/ou mouse. Assim como já é feito com a callback que
gerencia eventos do teclado "padrão", vamos registrar uma unção callback para gerenciar eventos das teclas
especiais acrestando a seguinte linha de código na função main, antes da chamada para a função Inicializa():
Em seguida, declare as seguintes variáveis globais, logo após os includes,
utilizando um tipo de dado OpenGL:
Inicialize estas variáveis na função Inicializa() com os seguintes valores:
Agora altere os parâmetros passados para a função glTranslatef que é
chamada na função Desenha, para que sejam passadas estas variáveis, da seguinte maneira:
Finalmente, para fazer o tratamento dos eventos, inclua e termine de implementar a função callback TeclasEspeciais descrita abaixo. Complete código desta função de maneira a permitir transladar o objeto para cima, para baixo, para a esquerda e para a direita sempre que o usuário pressionar cada uma das teclas de setas (incremente e decremente as variáveis tx e ty) void TeclasEspeciais(int key, int x, int y) { switch (key) { case GLUT_KEY_UP: break; case GLUT_KEY_DOWN: break; case GLUT_KEY_LEFT: break; case GLUT_KEY_RIGHT: break; } glutPostRedisplay(); } Para outras informações sobre o tratamento de eventos, consulte o tutorial de OpenGL (http://www.inf.pucrs.br/~manssour/OpenGL/Eventos.html).
Comentários, dúvidas, sugestões, envie um mail para [email protected] |
Última alteração em 08 de agosto de 2006.