# HG changeset patch # User John Tsiombikas # Date 1334980593 -10800 # Node ID 2b30f261f6419af5596dce19a6e3aa89995951b5 initial commit diff -r 000000000000 -r 2b30f261f641 .hgignore --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgignore Sat Apr 21 06:56:33 2012 +0300 @@ -0,0 +1,5 @@ +\.o$ +\.swp$ +\.d$ +^intrav$ +^shots/ diff -r 000000000000 -r 2b30f261f641 Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Makefile Sat Apr 21 06:56:33 2012 +0300 @@ -0,0 +1,32 @@ +csrc = $(wildcard src/*.c) +ccsrc = $(wildcard src/*.cc) +obj = $(csrc:.c=.o) $(ccsrc:.cc=.o) +dep = $(obj:.o=.d) +bin = intrav + +CFLAGS = -pedantic -Wall -g -I/usr/local/include $(add_inc) +CXXFLAGS = -std=c++0x $(CFLAGS) +LDFLAGS = -L/usr/local/lib $(add_lib) $(libgl) $(libal) -lm -lvmath -limago + +ifeq ($(shell uname -s), Darwin) + libgl = -framework OpenGL -framework GLUT -lGLEW + add_inc += -I/opt/local/include + add_lib += -L/opt/local/lib +else + libgl = -lGL -lGLU -lglut -lGLEW +endif + +$(bin): $(obj) + $(CXX) -o $@ $(obj) $(LDFLAGS) + +-include $(dep) + +%.d: %.c + @$(CPP) $(CFLAGS) $< -MM -MT $(@:.d=.o) >$@ + +%.d: %.cc + @$(CPP) $(CXXFLAGS) $< -MM -MT $(@:.d=.o) >$@ + +.PHONY: clean +clean: + rm -f $(obj) $(bin) $(dep) diff -r 000000000000 -r 2b30f261f641 src/game.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/game.cc Sat Apr 21 06:56:33 2012 +0300 @@ -0,0 +1,56 @@ +#include +#include "opengl.h" +#include "game.h" + +static unsigned long tmsec, start_time = -1; + +bool game_init() +{ + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + + float lpos[] = {-1, 1, 1, 0}; + glLightfv(GL_LIGHT0, GL_POSITION, lpos); + + return true; +} + +void game_shutdown() +{ + exit(0); +} + +void game_update(unsigned long msec) +{ + if(start_time == 0) { + start_time = msec; + } + tmsec = msec - start_time; +} + +void game_draw() +{ + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glTranslatef(0, 0, -8); + glRotatef(20, 1, 0, 0); + + glFrontFace(GL_CW); + glutSolidTeapot(1.0); + glFrontFace(GL_CCW); +} + +void game_input_keyb(int key, int state) +{ + if(state) { + switch(key) { + case 27: + game_shutdown(); + + default: + break; + } + } +} diff -r 000000000000 -r 2b30f261f641 src/game.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/game.h Sat Apr 21 06:56:33 2012 +0300 @@ -0,0 +1,12 @@ +#ifndef GAME_H_ +#define GAME_H_ + +bool game_init(); +void game_shutdown(); + +void game_update(unsigned long msec); +void game_draw(); + +void game_input_keyb(int key, int state); + +#endif // GAME_H_ diff -r 000000000000 -r 2b30f261f641 src/main.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main.cc Sat Apr 21 06:56:33 2012 +0300 @@ -0,0 +1,77 @@ +#include +#include +#include "opengl.h" +#include "game.h" + +#define FOV_DEG 50.0 + +void disp(); +void idle(); +void reshape(int x, int y); +void key_press(unsigned char key, int x, int y); +void key_release(unsigned char key, int x, int y); + +int win_xsz, win_ysz; + +int main(int argc, char **argv) +{ + glutInitWindowSize(800, 450); + glutInit(&argc, argv); + glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); + glutCreateWindow("intravenous interventor"); + + glutDisplayFunc(disp); + glutIdleFunc(idle); + glutReshapeFunc(reshape); + glutKeyboardFunc(key_press); + glutKeyboardUpFunc(key_release); + + if(!game_init()) { + return 1; + } + + glutMainLoop(); + return 0; +} + +void idle() +{ + glutPostRedisplay(); +} + +void disp() +{ + unsigned long msec = glutGet(GLUT_ELAPSED_TIME); + // update any game logic + game_update(msec); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + // render stuff + game_draw(); + + glutSwapBuffers(); + assert(glGetError() == GL_NO_ERROR); +} + +void reshape(int x, int y) +{ + glViewport(0, 0, x, y); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(FOV_DEG, (float)x / (float)y, 1.0, 1000.0); + + win_xsz = x; + win_ysz = y; +} + +void key_press(unsigned char key, int x, int y) +{ + game_input_keyb(key, 1); +} + +void key_release(unsigned char key, int x, int y) +{ + game_input_keyb(key, 0); +} diff -r 000000000000 -r 2b30f261f641 src/opengl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/opengl.h Sat Apr 21 06:56:33 2012 +0300 @@ -0,0 +1,12 @@ +#ifndef OPENGL_H_ +#define OPENGL_H_ + +#include + +#ifndef __APPLE__ +#include +#else +#include +#endif + +#endif /* OPENGL_H_ */