Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as C++ by Pashtet ( 15 years ago )
#include "glut.h"
GLfloat spin = 0.0;

GLfloat eyex = 0.0, eyey = 0.0, eyez = 1.0;

void GLUTCALLBACK
init(void) {
    glClearColor (0.0, 0.0, 0.0, 0.0);
    glShadeModel(GL_FLAT);
}


void GLUTCALLBACK
display(void) {
    glClear(GL_COLOR_BUFFER_BIT);
    glPushMatrix();
    glLoadIdentity();

    gluLookAt(eyex, eyey, eyez, /**/ 0, 0, 0, /**/ 0, 1, 0);
    glRotatef(spin, 0.0, 1.0, 0.0);

    glColor3f(1.0, 0.5, 0.0);
    glutWireTeapot(0.5);
    glutWireCube(1.0);
    glutWireCube(2.0);
    glPopMatrix();
    glutSwapBuffers();
}


void GLUTCALLBACK
spinDisplay(void) {
    spin = spin +2.0;
    if (spin > 360.0)
        spin = spin - 360.0;
    glutPostRedisplay();

}

void GLUTCALLBACK
mouse(int button, int state, int x, int y) {
    switch (button) {
        case GLUT_LEFT_BUTTON:
            if (state == GLUT_DOWN) {
                glutIdleFunc(spinDisplay);
            }
        break;
        case GLUT_RIGHT_BUTTON:
            if (state == GLUT_DOWN)
                glutIdleFunc(0);
        break;
        case GLUT_MIDDLE_BUTTON:
            if (state == GLUT_DOWN)
                eyex = 0.0;
                eyey = 0.0;
                eyez = 1.0;
        break;
        default:
        break;
    }
}

void GLUTCALLBACK
keyboard (unsigned char key, int x, int y ) {
    switch (key) {
        case 'q':
            eyez += 0.1;
            if (eyez > 1)
                eyez = 1;
            break;
        case 'e':
            eyez -= 0.1;
            if (eyez < -1)
                eyez = -1;
            break;
        case 'a':
            eyex -= 0.1;
            if (eyex < -1)
                eyex = -1;
            break;
        case 'd':
            eyex += 0.1;
            if (eyex > 1)
                eyex = 1;
            break;
        case 's':
            eyey -= 0.1;
            if (eyey < -1)
                eyey = -1;
            break;
        case 'w':
            eyey += 0.1;
            if (eyey > 1)
                eyey = 1;
            break;
    }
    glutPostRedisplay();
}
/*
Запросить режим отображения с двойной буферизацией.
Зарегистрировать функции обратного вызова по вводу данных от мыши*/

int main(int argc, char** argv) {
    glutInit(&argc;, argv);
    init();
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
    glMatrixMode(GL_MODELVIEW);
    glutInitWindowSize(250, 250);
    glutInitWindowPosition(100,  100);
    glutCreateWindow(argv[0]);
    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    glutKeyboardFunc(keyboard);
    glutIdleFunc(spinDisplay);
    glutMainLoop();

    return 0 ;
}

 

Revise this Paste

Your Name: Code Language: