open gl quadrado e triangolo girando na tela em 2D

#include
#include

// redesenhar janela de visualização
void DesenhaObjetos(void)
{
static float angulo = 0.0f;


// limpa a janela com a cor branca
glClearColor(1,1,1,0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

// muda para o sistema de cordenadas do modela
glMatrixMode(GL_MODELVIEW);
// inicializa a matriz de transformação corrente
glLoadIdentity();

//define a cor de desenho vermelho
glColor3f(1,0,0);

// move o triangulo para a esquerda
glTranslatef (0.5, 0.0, 0.0);
// comando para rotação (angulo / x / y / z)
glRotatef(angulo, 0.0, 0.0, 1.0); //z = rotação em seu proprio eixo


// desenha o triangulo no centro da janela
glBegin(GL_TRIANGLES);
glVertex2f(-0.4,-0.3);
glVertex2f( 0.0, 0.3);
glVertex2f( 0.4,-0.3);
glEnd();

// muda para o sistema de cordenadas do modela
glMatrixMode(GL_MODELVIEW);
// inicializa a matriz de transformação corrente
glLoadIdentity();

// move o quadrado para adireita
glTranslatef (-0.5, 0.0, 0.0);
//comando para rotação (angulo / x / y / z)
glRotatef(angulo, 0.0, 0.0, 1.0); //z = rotação em seu proprio eixo

// desenha o quadrado na tela
glBegin(GL_QUADS);
glVertex2f(-0.3, 0.3);
glVertex2f( 0.3, 0.3);
glVertex2f( 0.3,-0.3);
glVertex2f(-0.3,-0.3);
glEnd();

// a variavel 'angulo' é incrementar e
// dar ideia que o objeto está em rotação
angulo += 0.50f;

// intervalo de tempo "cotrola a velocidade de rotação"
Sleep (1);

//*************************
glutSwapBuffers();
}

// gerencia o evento de teclas
void Teclado(unsigned char key, int x, int y)
{
// quando a tecla "ESC" for precionada o programa sera fechado
if (key == 27)
exit(0);
}

// função para iniciar parametros e variaveis
void Inicializa(void)
{
// define a janela de visualização 2d
glMatrixMode(GL_PROJECTION);
gluOrtho2D(-1.0,1.0,-1.0,1.0);
glMatrixMode(GL_MODELVIEW);
}

// Função que executa rotinas padrões da Glut
void idle(void)
{
glutPostRedisplay();
}

// programa principal
int main(void)
{
// define o modo de operação da glut
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

// especifica a posição onde a tela sera criada
glutInitWindowPosition(300,50);

// especifica o tamanho inicial da janela glut
glutInitWindowSize(600,600);

// cria a janela passando como arqumento o titulo da mesma
glutCreateWindow("FAZAG - SI | Computação Gráfica");

// registra a função de redesenho da janela
glutDisplayFunc(DesenhaObjetos);

// rotina padrao do glut
glutIdleFunc(idle);

// registra a função para tratamento das teclas
glutKeyboardFunc(Teclado);

// chama a função para faser as inicializaçoes
Inicializa();

// inicia o processamento e aguarda interaçoes do usuario
glutMainLoop();

return 0;
}


0 comentários: