intravenous

annotate src/main.cc @ 0:2b30f261f641

initial commit
author John Tsiombikas <nuclear@member.fsf.org>
date Sat, 21 Apr 2012 06:56:33 +0300
parents
children 3ea290d35984
rev   line source
nuclear@0 1 #include <stdio.h>
nuclear@0 2 #include <assert.h>
nuclear@0 3 #include "opengl.h"
nuclear@0 4 #include "game.h"
nuclear@0 5
nuclear@0 6 #define FOV_DEG 50.0
nuclear@0 7
nuclear@0 8 void disp();
nuclear@0 9 void idle();
nuclear@0 10 void reshape(int x, int y);
nuclear@0 11 void key_press(unsigned char key, int x, int y);
nuclear@0 12 void key_release(unsigned char key, int x, int y);
nuclear@0 13
nuclear@0 14 int win_xsz, win_ysz;
nuclear@0 15
nuclear@0 16 int main(int argc, char **argv)
nuclear@0 17 {
nuclear@0 18 glutInitWindowSize(800, 450);
nuclear@0 19 glutInit(&argc, argv);
nuclear@0 20 glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
nuclear@0 21 glutCreateWindow("intravenous interventor");
nuclear@0 22
nuclear@0 23 glutDisplayFunc(disp);
nuclear@0 24 glutIdleFunc(idle);
nuclear@0 25 glutReshapeFunc(reshape);
nuclear@0 26 glutKeyboardFunc(key_press);
nuclear@0 27 glutKeyboardUpFunc(key_release);
nuclear@0 28
nuclear@0 29 if(!game_init()) {
nuclear@0 30 return 1;
nuclear@0 31 }
nuclear@0 32
nuclear@0 33 glutMainLoop();
nuclear@0 34 return 0;
nuclear@0 35 }
nuclear@0 36
nuclear@0 37 void idle()
nuclear@0 38 {
nuclear@0 39 glutPostRedisplay();
nuclear@0 40 }
nuclear@0 41
nuclear@0 42 void disp()
nuclear@0 43 {
nuclear@0 44 unsigned long msec = glutGet(GLUT_ELAPSED_TIME);
nuclear@0 45 // update any game logic
nuclear@0 46 game_update(msec);
nuclear@0 47
nuclear@0 48 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
nuclear@0 49
nuclear@0 50 // render stuff
nuclear@0 51 game_draw();
nuclear@0 52
nuclear@0 53 glutSwapBuffers();
nuclear@0 54 assert(glGetError() == GL_NO_ERROR);
nuclear@0 55 }
nuclear@0 56
nuclear@0 57 void reshape(int x, int y)
nuclear@0 58 {
nuclear@0 59 glViewport(0, 0, x, y);
nuclear@0 60
nuclear@0 61 glMatrixMode(GL_PROJECTION);
nuclear@0 62 glLoadIdentity();
nuclear@0 63 gluPerspective(FOV_DEG, (float)x / (float)y, 1.0, 1000.0);
nuclear@0 64
nuclear@0 65 win_xsz = x;
nuclear@0 66 win_ysz = y;
nuclear@0 67 }
nuclear@0 68
nuclear@0 69 void key_press(unsigned char key, int x, int y)
nuclear@0 70 {
nuclear@0 71 game_input_keyb(key, 1);
nuclear@0 72 }
nuclear@0 73
nuclear@0 74 void key_release(unsigned char key, int x, int y)
nuclear@0 75 {
nuclear@0 76 game_input_keyb(key, 0);
nuclear@0 77 }