Com relação ao mouse, a GLUT permite que se obtenha suas coordenadas em três situções:
Programa Exemplo (para o DEVCPP)quando um dos botões fore pressionado ou liberdado sobre a janela OpenGL; quando o mouse mover-se na tela e nenhum botão estiver pressionado sobre a janela OpenGL; quando um dos botões estiver pressionado e o mouse for movido sobre a janela OpenGL. // **************************************************
// Função chamada quando o mouse é pressionado
// ou liberado
// **************************************************
void MouseClick (int button, int state, int x, int y)
{
switch (button)
{
case GLUT_LEFT_BUTTON: printf("Botao esquerdo.");
break;
case GLUT_RIGHT_BUTTON: printf("Botao direito.");
break;
case GLUT_MIDDLE_BUTTON: printf("Botao do meio.");
break;
}
if (state == GLUT_DOWN)
printf("Pressionado na posição: ");
if (state == GLUT_UP)
printf("Liberado na posição: ");
printf("(%d, %d)\n", x,y);
}
// **************************************************
// Função chamada quando o mouse anda sobre a janele
// e NÃO HÁ botão pressionado
// **************************************************
void MouseAndandoNaoPressionado (int x, int y)
{
printf("Mouse ANDANDO solto na janela. Posição: (%d, %d)\n", x,y);
}
// **************************************************
// Função chamada quando o mouse anda sobre a janele
// e HÁ botão pressionado
// **************************************************
void MouseAndandoPressionado (int x, int y)
{
printf("Mouse ANDANDO pressionado na janela. Posição: (%d, %d)\n", x,y);
}// **************************************************
// Programa principal
// **************************************************
void main(void)
{
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
// define o tamnaho da janela na tela
glutInitWindowSize(400,350);
// posiciona a janela na tela
glutInitWindowPosition(10,10);
// define o título da janela
glutCreateWindow("Programa Exemplo para controle do mouse");
// define a rotina de exibição dos objetos OpenGL
glutDisplayFunc(RenderScene);
glutReshapeFunc(ChangeSize);// Define as funções de MOUSE
// movimento SEM botão pressionado
glutPassiveMotionFunc(MouseAndandoNaoPressionado);// movimento COM botão pressionado
glutMotionFunc(MouseAndandoPressionado);// Click em um botão
glutMouseFunc(MouseClick);
SetupRC();
glutMainLoop();
}