win32
[censuslogo] / src / main_glut.c
diff --git a/src/main_glut.c b/src/main_glut.c
new file mode 100644 (file)
index 0000000..2cd51ef
--- /dev/null
@@ -0,0 +1,97 @@
+#include <stdlib.h>
+#include <assert.h>
+#include <GL/glut.h>
+#include "app.h"
+
+static void display(void);
+static void idle(void);
+static void reshape(int x, int y);
+static void keyb(unsigned char key, int x, int y);
+
+static long start_time;
+
+int main(int argc, char **argv)
+{
+       unsigned int flags = GLUT_RGB | GLUT_DOUBLE;
+
+       glutInit(&argc, argv);
+       if(app_parse_args(argc, argv) == -1) {
+               return 1;
+       }
+
+#ifdef MSAA
+       if(msaa) {
+               flags |= GLUT_MULTISAMPLE;
+       }
+#endif
+
+       glutInitWindowSize(1280, 800);
+       glutInitDisplayMode(flags);
+       glutCreateWindow("census");
+
+       if(fullscr) {
+               glutFullScreen();
+               glutSetCursor(GLUT_CURSOR_NONE);
+       }
+
+       glutDisplayFunc(display);
+       glutIdleFunc(idle);
+       glutReshapeFunc(reshape);
+       glutKeyboardFunc(keyb);
+
+       if(app_init() == -1) {
+               return 1;
+       }
+       start_time = glutGet(GLUT_ELAPSED_TIME);
+
+       glutMainLoop();
+       return 0;
+}
+
+static void display(void)
+{
+       msec = glutGet(GLUT_ELAPSED_TIME) - start_time;
+
+       app_display();
+
+       glutSwapBuffers();
+       assert(glGetError() == GL_NO_ERROR);
+}
+
+static void idle(void)
+{
+       glutPostRedisplay();
+}
+
+static void reshape(int x, int y)
+{
+       app_reshape(x, y);
+       win_width = x;
+       win_height = y;
+}
+
+static void keyb(unsigned char key, int x, int y)
+{
+       app_keyboard(key, 1);
+}
+
+void app_quit(void)
+{
+       exit(0);
+}
+
+static int saved_width = 1280, saved_height = 800;
+
+void app_fullscreen(void)
+{
+       saved_width = win_width;
+       saved_height = win_height;
+       glutFullScreen();
+       glutSetCursor(GLUT_CURSOR_NONE);
+}
+
+void app_windowed(void)
+{
+       glutReshapeWindow(saved_width, saved_height);
+       glutSetCursor(GLUT_CURSOR_INHERIT);
+}