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