vrfileman

annotate src/app.cc @ 2:282da6123fd4

lalalala
author John Tsiombikas <nuclear@member.fsf.org>
date Sun, 01 Feb 2015 12:51:10 +0200
parents dca518e371cf
children 2cbf85690e03
rev   line source
nuclear@0 1 #include <assert.h>
nuclear@0 2 #include "opengl.h"
nuclear@0 3 #include "app.h"
nuclear@2 4 #include "user.h"
nuclear@2 5
nuclear@2 6 static void draw_grid(int num, float sep);
nuclear@2 7
nuclear@2 8 static User user;
nuclear@2 9 static float eye_level = 1.6;
nuclear@0 10
nuclear@0 11 bool app_init()
nuclear@0 12 {
nuclear@0 13 if(!init_opengl()) {
nuclear@0 14 return false;
nuclear@0 15 }
nuclear@0 16 return true;
nuclear@0 17 }
nuclear@0 18
nuclear@0 19 void app_shutdown()
nuclear@0 20 {
nuclear@0 21 }
nuclear@0 22
nuclear@0 23 void app_display()
nuclear@0 24 {
nuclear@0 25 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
nuclear@0 26
nuclear@2 27 glMatrixMode(GL_MODELVIEW);
nuclear@2 28 glLoadIdentity();
nuclear@2 29
nuclear@2 30 Matrix4x4 viewmat;
nuclear@2 31 user.posrot.calc_inv_matrix(&viewmat);
nuclear@2 32 glLoadTransposeMatrixf(viewmat.m[0]);
nuclear@2 33 glTranslatef(0, -eye_level, 0);
nuclear@2 34
nuclear@2 35 draw_grid(20, 1.0);
nuclear@0 36
nuclear@0 37 swap_buffers();
nuclear@0 38 assert(glGetError() == GL_NO_ERROR);
nuclear@0 39 }
nuclear@0 40
nuclear@0 41 void app_reshape(int x, int y)
nuclear@0 42 {
nuclear@0 43 glViewport(0, 0, x, y);
nuclear@0 44
nuclear@0 45 glMatrixMode(GL_PROJECTION);
nuclear@0 46 glLoadIdentity();
nuclear@0 47 gluPerspective(50.0, (float)x / (float)y, 0.5, 500.0);
nuclear@0 48 }
nuclear@0 49
nuclear@0 50 void app_keyboard(int key, bool pressed, int x, int y)
nuclear@0 51 {
nuclear@0 52 if(pressed) {
nuclear@0 53 switch(key) {
nuclear@0 54 case 27:
nuclear@0 55 quit();
nuclear@0 56 }
nuclear@0 57 }
nuclear@0 58 }
nuclear@0 59
nuclear@0 60 void app_mouse_button(int bn, bool pressed, int x, int y)
nuclear@0 61 {
nuclear@0 62 }
nuclear@0 63
nuclear@0 64 void app_mouse_motion(int x, int y)
nuclear@0 65 {
nuclear@0 66 }
nuclear@2 67
nuclear@2 68 void app_sball_motion(float x, float y, float z)
nuclear@2 69 {
nuclear@2 70 }
nuclear@2 71
nuclear@2 72 void app_sball_rotate(float x, float y, float z)
nuclear@2 73 {
nuclear@2 74 }
nuclear@2 75
nuclear@2 76 void app_sball_button(int bn, bool pressed)
nuclear@2 77 {
nuclear@2 78 }
nuclear@2 79
nuclear@2 80 static void draw_grid(int num, float sep)
nuclear@2 81 {
nuclear@2 82 int hnum = num / 2;
nuclear@2 83 float max_dist = hnum * sep;
nuclear@2 84
nuclear@2 85 glBegin(GL_LINES);
nuclear@2 86 glVertex3f(0, 0, -max_dist);
nuclear@2 87 glVertex3f(0, 0, max_dist);
nuclear@2 88 glVertex3f(-max_dist, 0, 0);
nuclear@2 89 glVertex3f(max_dist, 0, 0);
nuclear@2 90
nuclear@2 91 for(int i=1; i<hnum; i++) {
nuclear@2 92 float x = i * sep;
nuclear@2 93
nuclear@2 94 glVertex3f(-x, 0, -max_dist);
nuclear@2 95 glVertex3f(-x, 0, max_dist);
nuclear@2 96 glVertex3f(x, 0, -max_dist);
nuclear@2 97 glVertex3f(x, 0, max_dist);
nuclear@2 98 glVertex3f(-max_dist, 0, -x);
nuclear@2 99 glVertex3f(max_dist, 0, -x);
nuclear@2 100 glVertex3f(-max_dist, 0, x);
nuclear@2 101 glVertex3f(max_dist, 0, x);
nuclear@2 102 }
nuclear@2 103 glEnd();
nuclear@2 104 }