now a toggle for perspective/orthogonal projection in shapes demo
git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1152 7f0cb862-5218-0410-a997-914c9d46530a
This commit is contained in:
parent
f692084300
commit
5bb67c1c82
@ -13,6 +13,7 @@
|
|||||||
- <tt>Esc </tt> Quit
|
- <tt>Esc </tt> Quit
|
||||||
- <tt>q Q </tt> Quit
|
- <tt>q Q </tt> Quit
|
||||||
- <tt>i I </tt> Show info
|
- <tt>i I </tt> Show info
|
||||||
|
- <tt>p P </tt> Toggle perspective or orthographic projection
|
||||||
- <tt>= + </tt> Increase \a slices
|
- <tt>= + </tt> Increase \a slices
|
||||||
- <tt>- _ </tt> Decreate \a slices
|
- <tt>- _ </tt> Decreate \a slices
|
||||||
- <tt>, < </tt> Decreate \a stacks
|
- <tt>, < </tt> Decreate \a stacks
|
||||||
@ -64,6 +65,8 @@ static double orad = 1.0; /* doubles as size for objects other than Torus */
|
|||||||
static int depth = 4;
|
static int depth = 4;
|
||||||
static double offset[ 3 ] = { 0, 0, 0 };
|
static double offset[ 3 ] = { 0, 0, 0 };
|
||||||
static GLboolean show_info = GL_TRUE;
|
static GLboolean show_info = GL_TRUE;
|
||||||
|
static float ar;
|
||||||
|
static int persProject = 1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* These one-liners draw particular objects, fetching appropriate
|
* These one-liners draw particular objects, fetching appropriate
|
||||||
@ -224,16 +227,9 @@ static void shapesPrintf (int row, int col, const char *fmt, ...)
|
|||||||
static void
|
static void
|
||||||
resize(int width, int height)
|
resize(int width, int height)
|
||||||
{
|
{
|
||||||
const float ar = (float) width / (float) height;
|
ar = (float) width / (float) height;
|
||||||
|
|
||||||
glViewport(0, 0, width, height);
|
glViewport(0, 0, width, height);
|
||||||
|
|
||||||
glMatrixMode(GL_PROJECTION);
|
|
||||||
glLoadIdentity();
|
|
||||||
glFrustum(-ar, ar, -1.0, 1.0, 2.0, 100.0);
|
|
||||||
|
|
||||||
glMatrixMode(GL_MODELVIEW);
|
|
||||||
glLoadIdentity() ;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void display(void)
|
static void display(void)
|
||||||
@ -241,6 +237,15 @@ static void display(void)
|
|||||||
const double t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
|
const double t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
|
||||||
const double a = t*90.0;
|
const double a = t*90.0;
|
||||||
|
|
||||||
|
glMatrixMode(GL_PROJECTION);
|
||||||
|
glLoadIdentity();
|
||||||
|
if (persProject)
|
||||||
|
glFrustum(-ar, ar, -1.0, 1.0, 2.0, 100.0);
|
||||||
|
else
|
||||||
|
glOrtho(-ar*3, ar*3, -3.0, 3.0, 2.0, 100.0);
|
||||||
|
glMatrixMode(GL_MODELVIEW);
|
||||||
|
glLoadIdentity();
|
||||||
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
|
||||||
glEnable(GL_LIGHTING);
|
glEnable(GL_LIGHTING);
|
||||||
@ -309,6 +314,9 @@ key(unsigned char key, int x, int y)
|
|||||||
case '0':
|
case '0':
|
||||||
case ')': ++depth; break;
|
case ')': ++depth; break;
|
||||||
|
|
||||||
|
case 'P':
|
||||||
|
case 'p': persProject=!persProject; break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user