nuclear@0: #include nuclear@0: #include nuclear@0: #include "opengl.h" nuclear@0: #include "game.h" nuclear@0: nuclear@0: #define FOV_DEG 50.0 nuclear@0: nuclear@0: void disp(); nuclear@0: void idle(); nuclear@0: void reshape(int x, int y); nuclear@0: void key_press(unsigned char key, int x, int y); nuclear@0: void key_release(unsigned char key, int x, int y); nuclear@1: void mouse(int bn, int state, int x, int y); nuclear@1: void motion(int x, int y); nuclear@0: nuclear@0: int win_xsz, win_ysz; nuclear@0: nuclear@0: int main(int argc, char **argv) nuclear@0: { nuclear@0: glutInitWindowSize(800, 450); nuclear@0: glutInit(&argc, argv); nuclear@0: glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); nuclear@0: glutCreateWindow("intravenous interventor"); nuclear@0: nuclear@0: glutDisplayFunc(disp); nuclear@0: glutIdleFunc(idle); nuclear@0: glutReshapeFunc(reshape); nuclear@0: glutKeyboardFunc(key_press); nuclear@0: glutKeyboardUpFunc(key_release); nuclear@1: glutMouseFunc(mouse); nuclear@1: glutMotionFunc(motion); nuclear@0: nuclear@3: glewInit(); nuclear@3: nuclear@0: if(!game_init()) { nuclear@0: return 1; nuclear@0: } nuclear@0: nuclear@0: glutMainLoop(); nuclear@0: return 0; nuclear@0: } nuclear@0: nuclear@0: void idle() nuclear@0: { nuclear@0: glutPostRedisplay(); nuclear@0: } nuclear@0: nuclear@0: void disp() nuclear@0: { nuclear@0: unsigned long msec = glutGet(GLUT_ELAPSED_TIME); nuclear@0: // update any game logic nuclear@0: game_update(msec); nuclear@0: nuclear@0: glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); nuclear@0: nuclear@0: // render stuff nuclear@0: game_draw(); nuclear@0: nuclear@0: glutSwapBuffers(); nuclear@0: assert(glGetError() == GL_NO_ERROR); nuclear@0: } nuclear@0: nuclear@0: void reshape(int x, int y) nuclear@0: { nuclear@0: glViewport(0, 0, x, y); nuclear@0: nuclear@0: glMatrixMode(GL_PROJECTION); nuclear@0: glLoadIdentity(); nuclear@2: gluPerspective(FOV_DEG, (float)x / (float)y, 0.1, 200.0); nuclear@0: nuclear@0: win_xsz = x; nuclear@0: win_ysz = y; nuclear@0: } nuclear@0: nuclear@0: void key_press(unsigned char key, int x, int y) nuclear@0: { nuclear@0: game_input_keyb(key, 1); nuclear@0: } nuclear@0: nuclear@0: void key_release(unsigned char key, int x, int y) nuclear@0: { nuclear@0: game_input_keyb(key, 0); nuclear@0: } nuclear@1: nuclear@1: void mouse(int bn, int state, int x, int y) nuclear@1: { nuclear@1: game_input_mbutton(bn - GLUT_LEFT_BUTTON, state == GLUT_DOWN, x, y); nuclear@1: } nuclear@1: nuclear@1: void motion(int x, int y) nuclear@1: { nuclear@1: game_input_mmotion(x, y); nuclear@1: }