Difference between revisions of "C: Introdução ao OpenGL"
From AdonaiMedrado.Pro.Br
(New page: <code lang="c"> →*Programa adaptado de *COHEN, Marcelo e MANSSOUR, Isabel Hard. OpenGL: uma abordagem prática e objetiva. São Paulo: Novatec, 2006. *: #include <stdlib.h> #incl...) |
|||
(One intermediate revision by the same user not shown) | |||
Line 2: | Line 2: | ||
/* | /* | ||
*Programa adaptado de | *Programa adaptado de | ||
− | *COHEN, Marcelo e MANSSOUR, Isabel Hard. OpenGL: uma abordagem | + | *COHEN, Marcelo e MANSSOUR, Isabel Hard. OpenGL: uma abordagem prática e objetiva. São Paulo: Novatec, 2006. |
**/ | **/ | ||
#include <stdlib.h> | #include <stdlib.h> | ||
Line 87: | Line 87: | ||
/* | /* | ||
− | * | + | * Sugestão: |
− | * 1) Pesquisar o parametro GLUT_DOUBLE e a | + | * 1) Pesquisar o parametro GLUT_DOUBLE e a função glutSwapBuffers |
* 2) Pesquisar o parametro GLUT_DEPTH | * 2) Pesquisar o parametro GLUT_DEPTH | ||
* 3) Parametros GLUT_INDEX | * 3) Parametros GLUT_INDEX | ||
Line 95: | Line 95: | ||
/* | /* | ||
− | * | + | * Sugestão: |
− | * 1) Pesquise e tente utilizar a | + | * 1) Pesquise e tente utilizar a função glutInitWindowPosition(). |
*/ | */ | ||
glutInitWindowSize(400,400); | glutInitWindowSize(400,400); | ||
Line 107: | Line 107: | ||
* glutReshapeFunc(responder_ao_redimensionamento(x,y)); */ | * glutReshapeFunc(responder_ao_redimensionamento(x,y)); */ | ||
− | /* Quando a funcao responder_ao_movimento_do_mouse | + | /* Quando a funcao responder_ao_movimento_do_mouse será chamada? */ |
glutMotionFunc(responder_ao_movimento_do_mouse); | glutMotionFunc(responder_ao_movimento_do_mouse); | ||
glutPassiveMotionFunc(responder_ao_movimento_passivo_do_mouse); | glutPassiveMotionFunc(responder_ao_movimento_passivo_do_mouse); | ||
− | /* Quem | + | /* Quem são o x e o y que a função responder_a_acao_do_teclado receberá? */ |
glutKeyboardFunc(responder_a_acao_do_teclado); | glutKeyboardFunc(responder_a_acao_do_teclado); | ||
− | /* Quando a | + | /* Quando a função responder_a_acao_especial_do_teclado será executadá? */ |
glutSpecialFunc(responder_a_acao_especial_do_teclado); | glutSpecialFunc(responder_a_acao_especial_do_teclado); | ||
− | /* Para as | + | /* Para as funções acima, qual o valor de x e de y quando o mouse esta fora do espaço da janela? */ |
/* Qua o efeito no programa no caso da linha abaixo ser descomentada? */ | /* Qua o efeito no programa no caso da linha abaixo ser descomentada? */ | ||
− | /* glutIdleFunc(executar_funcao_idle); | + | /* glutIdleFunc(executar_funcao_idle); */ |
inicializar(); | inicializar(); |
Latest revision as of 16:45, 25 October 2008
/* *Programa adaptado de *COHEN, Marcelo e MANSSOUR, Isabel Hard. OpenGL: uma abordagem prática e objetiva. São Paulo: Novatec, 2006. **/ #include <stdlib.h> #include <stdio.h> #include <GL/glut.h> void desenhar(void) { glClearColor(1,1,1,0); glClear(GL_COLOR_BUFFER_BIT); glColor3f(1,0,0); glBegin(GL_TRIANGLES); glVertex3f(-0.5,-0.5,0); glVertex3f(0.0,0.5,0); glVertex3f(0.5,-0.5,0); glEnd(); glFlush(); } void inicializar(void) { glMatrixMode(GL_PROJECTION); gluOrtho2D(-1.0,1.0,-1.0,1.0); glMatrixMode(GL_MODELVIEW); } void responder_a_acao_do_teclado(unsigned char tecla, int x, int y) { printf("glutKeyboardFunc: (%d,%d,%d)\n",tecla,x,y); switch(tolower(tecla)) { case 'r': case 'R': glutReshapeWindow(400,400); glutPositionWindow(0,0); break; case 'f': case 'F': glutFullScreen(); break; case 27: case 'q': case 'Q': exit(0); break; } if (tecla == 27 || tecla == 'q' || tecla == 'Q') exit (0); } void responder_a_acao_especial_do_teclado(int tecla, int x, int y) { printf("glutSpecialFunc: (%d,%d,%d)\n",tecla,x,y); } void responder_ao_redimensionamento(int largura, int altura) { printf("glutReshapeFunc: (%d,%d)\n",largura,altura); } void responder_ao_movimento_do_mouse(int x, int y) { printf("glutMotionFunc: (%d,%d)\n",x,y); } void responder_ao_movimento_passivo_do_mouse(int x, int y) { printf("glutPassiveMotionFunc: (%d,%d)\n",x,y); } void executar_funcao_idle(void) { printf("."); fflush(stdout); } int main(int argp, char *argv[]) { glutInit(&argp,argv); /* * Sugestão: * 1) Pesquisar o parametro GLUT_DOUBLE e a função glutSwapBuffers * 2) Pesquisar o parametro GLUT_DEPTH * 3) Parametros GLUT_INDEX */ glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); /* * Sugestão: * 1) Pesquise e tente utilizar a função glutInitWindowPosition(). */ glutInitWindowSize(400,400); /* Pergunta: onde aparece esta mensagem? */ glutCreateWindow("Meu primeiro programa"); glutDisplayFunc(desenhar); /* A chamada abaixo da funcao glutReshapeFunc esta correta? * glutReshapeFunc(responder_ao_redimensionamento(x,y)); */ /* Quando a funcao responder_ao_movimento_do_mouse será chamada? */ glutMotionFunc(responder_ao_movimento_do_mouse); glutPassiveMotionFunc(responder_ao_movimento_passivo_do_mouse); /* Quem são o x e o y que a função responder_a_acao_do_teclado receberá? */ glutKeyboardFunc(responder_a_acao_do_teclado); /* Quando a função responder_a_acao_especial_do_teclado será executadá? */ glutSpecialFunc(responder_a_acao_especial_do_teclado); /* Para as funções acima, qual o valor de x e de y quando o mouse esta fora do espaço da janela? */ /* Qua o efeito no programa no caso da linha abaixo ser descomentada? */ /* glutIdleFunc(executar_funcao_idle); */ inicializar(); glutMainLoop(); return 0; }