Перемещение точки OpenGL C++

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Autom, 12 Jan 2011.

  1. Autom

    Autom New Member

    Joined:
    29 Jun 2010
    Messages:
    14
    Likes Received:
    0
    Reputations:
    0
    Хочу написать программу, чтобы на экране сначала выводилась точка(Это я уже сделал), но потом с помощью клавиш(стрелок) я смог бы управлять ее координатами.
    Вот код, компилируется без проблем, но при включении виснет намертво(
    Code:
    #include <GL/gl.h>
    #include <GL/glu.h>
    #include <GL/glut.h>
    #include <conio.h>
    #include <iostream>
    
    
    
    void display(){
    
    glClear(GL_COLOR_BUFFER_BIT);
    int x, y;
        setlocale( 0, "rus" );
    	char symbol = _getch();
    
    	while( ( symbol = _getch() ) ) {
    		switch( symbol ) {
    			case 72:  // стрелка вверх
                    y = y + 10;
    				glBegin(GL_POINTS);
                    glColor3f(1.0, 0.0, 0.0);
                    glVertex2f(x, y);
                    glEnd();
    				break;
    			case 80:  // стрелка вниз
    			    y = y - 10;
    				glBegin(GL_POINTS);
                    glColor3f(1.0, 0.0, 0.0);
                    glVertex2f(x, y);
                    glEnd();
    
    				break;
    			case 77:  // стрелка вправо
    			    x = x + 10;
    				glBegin(GL_POINTS);
                    glColor3f(1.0, 0.0, 0.0);
                    glVertex2f(x, y);
                    glEnd();
    
    				break;
    			case 75:  // стрелка влево
                    x = x - 10;
    				glBegin(GL_POINTS);
                    glColor3f(1.0, 0.0, 0.0);
                    glVertex2f(x, y);
                    glEnd();
    
    				break;
    			default:
    				break;
    		}
    	}
    glFlush();
    }
    
    int main(int argc, char **argv){
    
      glutInit(&argc, argv);
      glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
      glutInitWindowSize(240, 240);
      glutInitWindowPosition(100, 740);
      glutCreateWindow("Coin");
      glClearColor(1.0, 1.0, 1.0, 1.0);
      glMatrixMode(GL_PROJECTION);
      glLoadIdentity();
      glOrtho(0.0, 240.0, 0.0, 240.0, -1.0, 1.0);
      glutDisplayFunc(display);
    
      glutMainLoop();
      return 0;
    }
    
     
    #1 Autom, 12 Jan 2011
    Last edited by a moderator: 13 Jan 2011