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 } |