view3d
diff src/main.c @ 9:d2e283764fca
fixed fullscreen
separate idle func so it works on windows too
author | nuclear@neutrino-win7.lan |
---|---|
date | Sat, 28 Jan 2012 02:56:27 +0200 |
parents | 5562a637e5aa |
children |
line diff
1.1 --- a/src/main.c Mon Jan 23 08:51:59 2012 +0200 1.2 +++ b/src/main.c Sat Jan 28 02:56:27 2012 +0200 1.3 @@ -16,6 +16,7 @@ 1.4 void proj_matrix(float eye); 1.5 void view_matrix(float eye); 1.6 1.7 +void idle(void); 1.8 void reshape(int x, int y); 1.9 void keyb(unsigned char key, int x, int y); 1.10 void keyb_up(unsigned char key, int x, int y); 1.11 @@ -63,7 +64,7 @@ 1.12 glutSpaceballRotateFunc(sball_rotate); 1.13 glutSpaceballButtonFunc(sball_button); 1.14 if(auto_rot) { 1.15 - glutIdleFunc(glutPostRedisplay); 1.16 + glutIdleFunc(idle); 1.17 } 1.18 1.19 glewInit(); 1.20 @@ -172,6 +173,11 @@ 1.21 glRotatef(cam_theta, 0, 1, 0); 1.22 } 1.23 1.24 +void idle(void) 1.25 +{ 1.26 + glutPostRedisplay(); 1.27 +} 1.28 + 1.29 void reshape(int x, int y) 1.30 { 1.31 glViewport(0, 0, x, y); 1.32 @@ -235,7 +241,7 @@ 1.33 case ' ': 1.34 auto_rot = !auto_rot; 1.35 if(auto_rot) { 1.36 - glutIdleFunc(glutPostRedisplay); 1.37 + glutIdleFunc(idle); 1.38 } else { 1.39 glutIdleFunc(0); 1.40 } 1.41 @@ -245,10 +251,16 @@ 1.42 case 'f': 1.43 { 1.44 static int fullscr; 1.45 + static int orig_xsz, orig_ysz; 1.46 if(++fullscr & 1) { 1.47 + int vp[4]; 1.48 + glGetIntegerv(GL_VIEWPORT, vp); 1.49 + orig_xsz = vp[2]; 1.50 + orig_ysz = vp[3]; 1.51 glutFullScreen(); 1.52 } else { 1.53 - glutPositionWindow(20, 20); 1.54 + glutReshapeWindow(orig_xsz, orig_ysz); 1.55 + glutPositionWindow(20, 40); 1.56 } 1.57 } 1.58 break;