git.ucc.asn.au
/
atyndall
/
cits2231.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
(no commit message)
[atyndall/cits2231.git]
/
scene.c
diff --git
a/scene.c
b/scene.c
index
b026883
..
e58ec7e
100644
(file)
--- a/
scene.c
+++ b/
scene.c
@@
-182,19
+182,18
@@
void makeMenu() {
* @param w New width
\r
* @param h New height
\r
*/
\r
* @param w New width
\r
* @param h New height
\r
*/
\r
-
/*
void windowReshape(int w, int h) {
\r
+void windowReshape(int w, int h) {
\r
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
\r
glMatrixMode(GL_PROJECTION);
\r
glLoadIdentity();
\r
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
\r
glMatrixMode(GL_PROJECTION);
\r
glLoadIdentity();
\r
- if (w <= h)
\r
- gl
Ortho(near, far, near*(GLfloat)h/(GLfloat)
w,
\r
-
far*(GLfloat)h/(GLfloat)w, -100, 100
);
\r
+ if (w <= h)
\r
+ gl
Frustum(-near, far, -near*(GLfloat) h / (GLfloat)
w,
\r
+
far*(GLfloat) h / (GLfloat) w, nearClip, farClip
);
\r
else
\r
else
\r
- glOrtho(near*(GLfloat)w/(GLfloat)h,
\r
- far*(GLfloat)w/(GLfloat)h, near, far, nearClip, farClip);
\r
- glMatrixMode(GL_MODELVIEW);
\r
- glLoadIdentity();
\r
-}*/
\r
+ glFrustum(-near*(GLfloat) w / (GLfloat) h,
\r
+ far*(GLfloat) w / (GLfloat) h, near, far, nearClip, farClip);
\r
+ glMatrixMode(GL_MODELVIEW);
\r
+}
\r
\r
/**
\r
* Called when mouse event occurs
\r
\r
/**
\r
* Called when mouse event occurs
\r
@@
-226,28
+225,45
@@
void mouse(int button, int state, int x, int y) {
}
\r
}
\r
\r
}
\r
}
\r
\r
+/**
\r
+ * Keybord event handler
\r
+ * w/s increase/decrease the z
\r
+ * a/d increase/decrease the x
\r
+ * q/e increase/decrease the y
\r
+ * z/x increase/decrease the angle
\r
+ * @param key Key pressed
\r
+ * @param x x co-ordinate of mouse
\r
+ * @param y y co-ordinate of mouse
\r
+ */
\r
void keyboard(unsigned char key, int x, int y) {
\r
switch(key) {
\r
case 'w':
\r
void keyboard(unsigned char key, int x, int y) {
\r
switch(key) {
\r
case 'w':
\r
-
z =
z - 1;
\r
+
camz = cam
z - 1;
\r
break;
\r
case 'a':
\r
break;
\r
case 'a':
\r
-
x =
x - 1;
\r
+
camx = cam
x - 1;
\r
break;
\r
case 's':
\r
break;
\r
case 's':
\r
-
z =
z + 1;
\r
+
camz = cam
z + 1;
\r
break;
\r
case 'd':
\r
break;
\r
case 'd':
\r
-
x =
x + 1;
\r
+
camx = cam
x + 1;
\r
break;
\r
case 'q':
\r
break;
\r
case 'q':
\r
-
y =
y + 1;
\r
+
camy = cam
y + 1;
\r
break;
\r
case 'e':
\r
break;
\r
case 'e':
\r
- y = y - 1;
\r
+ camy = camy - 1;
\r
+ break;
\r
+ case 'z':
\r
+ rot = rot + 1;
\r
+ break;
\r
+ case 'x':
\r
+ rot = rot - 1;
\r
break;
\r
}
\r
break;
\r
}
\r
- printf("Camera is now at (%f, %f, %f)\n", x, y, z);
\r
+ printf("Camera is now at (%f, %f, %f), angle %f\n", camx, camy, camz, rot);
\r
+ glutPostRedisplay();
\r
}
\r
\r
/**
\r
}
\r
\r
/**
\r
@@
-277,16
+293,14
@@
void motion(int x, int y) {
*/
\r
void display() {
\r
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
\r
*/
\r
void display() {
\r
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
\r
+ glMatrixMode(GL_MODELVIEW);
\r
glLoadIdentity();
\r
glLoadIdentity();
\r
- gluLookAt(
\r
- x, y, z, /* eye is at (x,y,z) */
\r
- 0.0, 0.0, 0.0, /* center is at (x,y,z) */
\r
- 0.0, 1.0, 0.0 /* up is in postivie Y direction */
\r
- );
\r
\r
\r
- // **NOTE: Currently this rotation function is all that moves the camera off
\r
- // the flat surface. Need to integrate function into gluLookAt
\r
- glRotatef(30.0, 1.0, 0.0, 0.0);
\r
+ //gluLookAt(
\r
+ // -30.0, -30.0, -30.0, /* eye is at (x,y,z) */
\r
+ /// 0.0, 0.0, 0.0, /* center is at (x,y,z) */
\r
+ // 0.0, 1.0, 0.0 /* up is in postivie Y direction */
\r
+ // );
\r
\r
/* Reposition the light source. */
\r
lightPosition[0] = 12*cos(lightAngle);
\r
\r
/* Reposition the light source. */
\r
lightPosition[0] = 12*cos(lightAngle);
\r
@@
-296,9
+310,11
@@
void display() {
\r
glPushMatrix();
\r
\r
\r
glPushMatrix();
\r
\r
- /* Perform scene rotations based on user mouse input. */
\r
+ /* Perform scene rotations based on user mouse
/keyboard
input. */
\r
glRotatef(angle, 0.0, 1.0, 0.0);
\r
glRotatef(angle, 0.0, 1.0, 0.0);
\r
- //glRotatef(angle2, 1.0, 0.0, 0.0); **NOTE: Only one degree of freedom
\r
+ glRotatef(angle2, 1.0, 0.0, 0.0);
\r
+ glTranslatef(camx, camy, camz);
\r
+ glRotatef(rot, 1.0, 0.0, 0.0);
\r
\r
glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
\r
\r
\r
glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
\r
\r
@@
-308,15
+324,15
@@
void display() {
\r
// Draw teapot for a test object
\r
glPushMatrix();
\r
\r
// Draw teapot for a test object
\r
glPushMatrix();
\r
- glTranslatef(0.0,
1.0, 0.0); // **NOTE: Teapot
does not rest on surface
\r
- glColor3f(0.
5, 0.5, 0.5
);
\r
+ glTranslatef(0.0,
0.5, 0.0); // **NOTE: Teapot currently
does not rest on surface
\r
+ glColor3f(0.
0, 0.0, 0.0
);
\r
glutSolidTeapot(1);
\r
glPopMatrix();
\r
\r
// Draw a white ball over the light source
\r
glPushMatrix();
\r
glDisable(GL_LIGHTING);
\r
glutSolidTeapot(1);
\r
glPopMatrix();
\r
\r
// Draw a white ball over the light source
\r
glPushMatrix();
\r
glDisable(GL_LIGHTING);
\r
- glColor3f(1.0, 1.0,
1
.0);
\r
+ glColor3f(1.0, 1.0,
0
.0);
\r
glTranslatef(lightPosition[0], lightPosition[1], lightPosition[2]);
\r
glutSolidSphere(1.0, 50, 50);
\r
glEnable(GL_LIGHTING);
\r
glTranslatef(lightPosition[0], lightPosition[1], lightPosition[2]);
\r
glutSolidSphere(1.0, 50, 50);
\r
glEnable(GL_LIGHTING);
\r
@@
-331,33
+347,24
@@
void display() {
* init function; sets initial OpenGL state
\r
*/
\r
void init() {
\r
* init function; sets initial OpenGL state
\r
*/
\r
void init() {
\r
- glMatrixMode(GL_PROJECTION);
\r
- glLoadIdentity();
\r
-
\r
- gluPerspective(
\r
- 60.0, /* field of view in degree */
\r
- 1.0, /* aspect ratio */
\r
- nearClip, /* Z near */
\r
- farClip /* Z far */
\r
- );
\r
-
\r
- glMatrixMode(GL_MODELVIEW);
\r
- glLoadIdentity();
\r
-
\r
glLightfv(GL_LIGHT0, GL_POSITION, light0_pos);
\r
glLightfv(GL_LIGHT0, GL_AMBIENT, ambient0);
\r
glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse0);
\r
glLightfv(GL_LIGHT0, GL_SPECULAR, specular0);
\r
glLightfv(GL_LIGHT0, GL_POSITION, light0_pos);
\r
glLightfv(GL_LIGHT0, GL_AMBIENT, ambient0);
\r
glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse0);
\r
glLightfv(GL_LIGHT0, GL_SPECULAR, specular0);
\r
+ glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, direction0);
\r
+
\r
+ glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 90.0);
\r
+
\r
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, glightmodel);
\r
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, glightmodel);
\r
- glEnable(GL_LIGHT0);
\r
- glEnable(GL_LIGHTING);
\r
- glEnable(GL_COLOR_MATERIAL);
\r
- glColorMaterial( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE );
\r
- glMaterialfv( GL_FRONT_AND_BACK, GL_SPECULAR, specular0);
\r
- glMaterialfv( GL_FRONT_AND_BACK, GL_EMISSION, emission0);
\r
\r
\r
-
\r
+ glMaterialfv(GL_FRONT, GL_AMBIENT, ambient);
\r
+ glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse);
\r
+ glMaterialfv(GL_FRONT, GL_SPECULAR, specular);
\r
+ glMaterialfv(GL_FRONT, GL_EMISSION, emission0);
\r
+ glMaterialf(GL_FRONT, GL_SHININESS, shine);
\r
\r
\r
+ glEnable(GL_LIGHT0);
\r
+ glEnable(GL_LIGHTING);
\r
}
\r
\r
/**
\r
}
\r
\r
/**
\r
@@
-388,6
+395,7
@@
int main(int argc, char **argv) {
glShadeModel(GL_SMOOTH); // Enables Smooth Shading
\r
glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // Black Background
\r
glClearDepth(1.0f); // Depth Buffer Setup
\r
glShadeModel(GL_SMOOTH); // Enables Smooth Shading
\r
glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // Black Background
\r
glClearDepth(1.0f); // Depth Buffer Setup
\r
+ glDepthRange(0,1);
\r
glEnable(GL_DEPTH_TEST); // Enables Depth Testing
\r
glDepthFunc(GL_LEQUAL); // the type
\r
glEnable(GL_CULL_FACE);
\r
glEnable(GL_DEPTH_TEST); // Enables Depth Testing
\r
glDepthFunc(GL_LEQUAL); // the type
\r
glEnable(GL_CULL_FACE);
\r
@@
-396,7
+404,7
@@
int main(int argc, char **argv) {
\r
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
\r
\r
\r
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
\r
\r
-
//
glutReshapeFunc(windowReshape);
\r
+ glutReshapeFunc(windowReshape);
\r
glutDisplayFunc(display);
\r
glutMouseFunc(mouse);
\r
glutKeyboardFunc(keyboard);
\r
glutDisplayFunc(display);
\r
glutMouseFunc(mouse);
\r
glutKeyboardFunc(keyboard);
\r
@@
-407,4
+415,4
@@
int main(int argc, char **argv) {
init();
\r
\r
glutMainLoop();
\r
init();
\r
\r
glutMainLoop();
\r
-}
\r
+}
\ No newline at end of file
UCC
git Repository :: git.ucc.asn.au