aboutsummaryrefslogtreecommitdiff
path: root/samples
diff options
context:
space:
mode:
authorWolfgang Draxinger <Wolfgang.Draxinger@draxit.de>2013-05-12 02:14:54 +0200
committerWolfgang Draxinger <Wolfgang.Draxinger@draxit.de>2013-05-12 02:14:54 +0200
commit023bc0f9a7d34735aefac0d95608a210441147fc (patch)
tree3fd0df3913d987476a9fda552c6c28a7d2ecaeb4 /samples
parent2442c23c78fbe205cbebbe2f26d8a20eecbb1347 (diff)
downloadcodesamples-023bc0f9a7d34735aefac0d95608a210441147fc.tar.gz
codesamples-023bc0f9a7d34735aefac0d95608a210441147fc.tar.bz2
frustum view aspect now influences observer frustum drawing
Diffstat (limited to 'samples')
-rw-r--r--samples/OpenGL/frustum/frustum.c33
1 files changed, 23 insertions, 10 deletions
diff --git a/samples/OpenGL/frustum/frustum.c b/samples/OpenGL/frustum/frustum.c
index dd9c42c..f74b6a5 100644
--- a/samples/OpenGL/frustum/frustum.c
+++ b/samples/OpenGL/frustum/frustum.c
@@ -9,6 +9,9 @@
#include <GL/glu.h>
#include <GL/glut.h>
+int window_view;
+int window_observer;
+
/* == basic Q^3 vector math functions == */
void crossproduct(
@@ -240,7 +243,7 @@ void draw_frustum(
/* == scene drawing code == */
-void display_observer(void)
+void display_observer(float frustum_aspect)
{
static float alpha = 0;
@@ -271,8 +274,8 @@ void display_observer(void)
gluLookAt(3, 1, -5, 0, 0, -2.5, 0, 1, 0);
}
- float const l = -0.5,
- r = 0.5,
+ float const l = -0.5*frustum_aspect,
+ r = 0.5*frustum_aspect,
b = -0.5,
t = 0.5,
n = 1,
@@ -297,10 +300,8 @@ void display_observer(void)
glutPostRedisplay();
}
-void display_frustum_view(void)
+void display_view(int const win_width, int const win_height)
{
- int const win_width = glutGet(GLUT_WINDOW_WIDTH);
- int const win_height = glutGet(GLUT_WINDOW_HEIGHT);
float const win_aspect = (float)win_width / (float)win_height;
glViewport(0, 0, win_width, win_height);
@@ -310,16 +311,28 @@ void display_frustum_view(void)
glutSwapBuffers();
}
+void display(void)
+{
+ glutSetWindow(window_view);
+ int const win_view_width = glutGet(GLUT_WINDOW_WIDTH);
+ int const win_view_height = glutGet(GLUT_WINDOW_HEIGHT);
+ float const win_view_aspect = (float)win_view_width / (float)win_view_height;
+ display_view(win_view_width, win_view_height);
+
+ glutSetWindow(window_observer);
+ display_observer(win_view_aspect);
+}
+
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE | GLUT_MULTISAMPLE);
- glutCreateWindow("Observer");
- glutDisplayFunc(display_observer);
+ window_observer = glutCreateWindow("Observer");
+ glutDisplayFunc(display);
- glutCreateWindow("Frustum View");
- glutDisplayFunc(display_frustum_view);
+ window_view = glutCreateWindow("Frustum View");
+ glutDisplayFunc(display);
glutMainLoop();
return 0;