Ir ao conteúdo
  • Cadastre-se

OpenGl basico - Eventos do teclado


Posts recomendados

Não sei se esse é o local certo para duvidas com OpenGL. Mas vamos lá.

Comecei estudar OpenGL hoje (há 3 horas pra ser mais exato) e estou com um pequeno problema. Tenho um programa que não faz nada além de criar uma janela no padrão RGB, e eu queria fazer o seguinte, quando eu apertar a letra 'r' a cor da janela ficar vermelha (red) quando apertar 'g' ficar verder e 'b' azul, com direito a misturas, exemplo, se eu apertar 'r' e 'g' a janela ficar amarela (pois vermelho e verde cria o amarelo). O meu programa funciona? SIM! porém ele funciona assim... quando eu aperto "uma cor" sofre a mudança de cor, porém eu não vejo, para eu poder perceber eu tenho que maximizar a janela ou minimizar, exemplo, a janela esta branca eu aperto 'r' e ele continua branca mas quando eu maximizo/minimizo ela fica vermelha (muda de cor). Como eu falei comecei hoje e meu programa é super simples, espero que me ajudem, pois comprei um livro de um amigo meu mas não encontrei esse problema, e minha faculdade está de ferias e não tenho contato com nenhum prof.

 

Meu código (não está comentado, mas quem sabe OpenGL vai entender muito fácil pois isso é o básico do básico básico):

____________________________________

#include <GL/gl.h>#include <GL/glut.h>#include <windows.h>GLfloat red = 0, green = 0, blue = 0;void Desenha(void){    glClearColor(red,green,blue,0.0);    glClear(GL_COLOR_BUFFER_BIT);    glFlush();}void Inicializacao(void){    glMatrixMode(GL_PROJECTION);    glOrtho(0.0,1.0,0.0,1.0,-1.0,1.0);    glMatrixMode(GL_MODELVIEW);    glLoadIdentity();}void Teclado(unsigned char key, int x, int y){    switch(key){        case 114:            if(red == 0){                red = 1;            } else {                red = 0;            }            break;        case 103:            if(green == 0){                green = 1;            } else {                green = 0;            }            break;        case 98:            if(blue == 0){                blue = 1;            } else {                blue = 0;            }            break;        case 27:            exit(0);            break;    }}int main(int argc, char** argv){    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);    glutInitWindowPosition(100,100);    glutInitWindowSize(400,400);    glutCreateWindow("Minha janelinha");    Inicializacao();    glutDisplayFunc(Desenha);    glutKeyboardFunc(Teclado);    glutMainLoop();    return 0;}
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...