<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0' gd:etag='W/&quot;AkMEQ309fCp7ImA9WhVVEE8.&quot;'><id>tag:blogger.com,1999:blog-290475634689485525</id><updated>2012-05-03T00:00:02.364-07:00</updated><title>Islander</title><subtitle type='html'>Postings of my work.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://willisuvic.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/290475634689485525/posts/default?redirect=false&amp;v=2'/><link rel='alternate' type='text/html' href='http://willisuvic.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>kevin willis</name><uri>http://www.blogger.com/profile/16061203339512755140</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='18' src='http://2.bp.blogspot.com/_nKEd7EWdGRE/S2U7j0THbkI/AAAAAAAAACA/PxIemzY4KeY/S220/001.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry gd:etag='W/&quot;CEUMQH44cSp7ImA9WhVWGEk.&quot;'><id>tag:blogger.com,1999:blog-290475634689485525.post-4189084333607329440</id><published>2012-04-30T20:18:00.000-07:00</published><updated>2012-04-30T20:18:01.039-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-04-30T20:18:01.039-07:00</app:edited><title>Tutorial Four outcome</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-TxcDy6tZPFg/T59UkUekidI/AAAAAAAAAK0/PYNsKS_GXzo/s1600/texture.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="170" src="http://1.bp.blogspot.com/-TxcDy6tZPFg/T59UkUekidI/AAAAAAAAAK0/PYNsKS_GXzo/s320/texture.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/290475634689485525-4189084333607329440?l=willisuvic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://willisuvic.blogspot.com/feeds/4189084333607329440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://willisuvic.blogspot.com/2012/04/tutorial-four-outcome.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/290475634689485525/posts/default/4189084333607329440?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/290475634689485525/posts/default/4189084333607329440?v=2'/><link rel='alternate' type='text/html' href='http://willisuvic.blogspot.com/2012/04/tutorial-four-outcome.html' title='Tutorial Four outcome'/><author><name>kevin willis</name><uri>http://www.blogger.com/profile/16061203339512755140</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='18' src='http://2.bp.blogspot.com/_nKEd7EWdGRE/S2U7j0THbkI/AAAAAAAAACA/PxIemzY4KeY/S220/001.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-TxcDy6tZPFg/T59UkUekidI/AAAAAAAAAK0/PYNsKS_GXzo/s72-c/texture.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;C0ADQng4fSp7ImA9WhVWGEk.&quot;'><id>tag:blogger.com,1999:blog-290475634689485525.post-7884224806571425388</id><published>2012-04-30T20:09:00.001-07:00</published><updated>2012-04-30T20:09:33.635-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-04-30T20:09:33.635-07:00</app:edited><title>Tutorial Part 4:C++, OpenGL, Linux</title><content type='html'>Tutorial Part Four&lt;br /&gt;
Compilation: g++ -o crawl crawl.cpp -lglut -lGLU - lGL&lt;br /&gt;
run: ./crawl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This tutorial will deal with Textures&lt;br /&gt;
&lt;br /&gt;
Note for the image files that are going to be used:&lt;br /&gt;
The size should be a power of 2, the file should be of type bmp&lt;br /&gt;
I will try doing a tutorial for other file types later&lt;br /&gt;
&lt;br /&gt;
Will load in the textures once in the init function &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
#include &amp;lt;math.h&amp;gt;&lt;br /&gt;
#include &amp;lt;GL/glut.h&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;algorithm&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Global Variables&lt;br /&gt;
// Camera direction variables&lt;br /&gt;
float lx=0.0f;&lt;br /&gt;
float lz=-1.0f;&lt;br /&gt;
&lt;br /&gt;
// XYZ position of the camera&lt;br /&gt;
float x=0.0f;&lt;br /&gt;
float z=5.0f;&lt;br /&gt;
float y = 1.0f;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
float deltaAngle = 0.0f;&lt;br /&gt;
float deltaMove = 0.0f;&lt;br /&gt;
float deltaUp = 0.0f; &lt;br /&gt;
float angle = 0.0f;&lt;br /&gt;
&lt;br /&gt;
//New global variables&lt;br /&gt;
//Name these what ever you like&lt;br /&gt;
GLuint texture_stone;&lt;br /&gt;
GLuint texture_wood;&lt;br /&gt;
GLuint texture_space;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;//New global variables&lt;br /&gt;
//Stuff for reading image file &lt;br /&gt;
unsigned char header[54];&lt;br /&gt;
unsigned int dataPos;&lt;br /&gt;
unsigned int image_width, image_height;&lt;br /&gt;
unsigned int imageSize;&lt;br /&gt;
unsigned char * data; &lt;br /&gt;
//******************************************************&lt;br /&gt;
//Read our BMP file&lt;br /&gt;
//******************************************************************************&lt;br /&gt;
GLuint loadBMP_custom(const char * imagepath, GLuint textureID)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; FILE * file = fopen(imagepath, "rb");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!file)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; printf("Image could not be opened\n");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(fread(header, 1, 54, file)!= 54)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; printf("Not a correct BMP file\n");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(header[0]!= 'B' || header[1] != 'M')&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; printf("Not a correct BMP file\n");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; dataPos = *(int*)&amp;amp;(header[0x0A]);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; imageSize = *(int*)&amp;amp;(header[0x22]);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; image_width = *(int*)&amp;amp;(header[0x12]);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; image_height = *(int*)&amp;amp;(header[0x16]);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(imageSize == 0)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; imageSize = image_width * image_height * 3;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(dataPos == 0)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dataPos = 54;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; data = new unsigned char [imageSize];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; fread(data,1,imageSize,file);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; fclose(file);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glGenTextures(1, &amp;amp;textureID);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glBindTexture(GL_TEXTURE_2D, textureID);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, image_width, image_height, 0 ,GL_BGR, GL_UNSIGNED_BYTE, data);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; free(data);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return textureID;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Function for drawing a cube&lt;br /&gt;
void cubes()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glColor3f(1.0f, 1.0f, 1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glTranslatef(0.0f ,0.75f, 0.0f);&lt;br /&gt;
&lt;br /&gt;
glBegin(GL_QUADS); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f( 1.0f, 1.0f, -1.0f); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(1.0f, 1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f, 1.0f, -1.0f); // Top-right of the quad (Top)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f(-1.0f, 1.0f, -1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(0.0f, 1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f, 1.0f, -1.0f); // Top-left of the quad (Top)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f(-1.0f, 1.0f,&amp;nbsp; 1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(0.0f, 0.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f, 1.0f,&amp;nbsp; 1.0f); // Bottom-left of the quad (Top)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f( 1.0f, 1.0f,&amp;nbsp; 1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(1.0f, 0.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f, 1.0f,&amp;nbsp; 1.0f); // Bottom-right of the quad (Top)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnd();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
//**********************************************************************&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f( 1.0f, -1.0f,&amp;nbsp; 1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(1.0f, 1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f, -1.0f,&amp;nbsp; 1.0f); // Top-right of the quad (Bottom)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f(-1.0f, -1.0f,&amp;nbsp; 1.0f); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(0.0f, 1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f, -1.0f,&amp;nbsp; 1.0f); // Top-left of the quad (Bottom)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f(-1.0f, -1.0f, -1.0f); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(0.0f, 0.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f, -1.0f, -1.0f); // Bottom-left of the quad (Bottom)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f( 1.0f, -1.0f, -1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(1.0f, 0.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f, -1.0f, -1.0f); // Bottom-right of the quad (Bottom)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnd();&lt;br /&gt;
//**********************************************************************&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f( 1.0f,&amp;nbsp; 1.0f, 1.0f); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(1.0f, 1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f,&amp;nbsp; 1.0f, 1.0f);&amp;nbsp; // Top-right of the quad (Front)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f(-1.0f,&amp;nbsp; 1.0f, 1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(0.0f, 1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f,&amp;nbsp; 1.0f, 1.0f);&amp;nbsp; // Top-left of the quad (Front)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f(-1.0f, -1.0f, 1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(0.0f, 0.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f, -1.0f, 1.0f);&amp;nbsp; // Bottom-left of the quad (Front)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f( 1.0f, -1.0f, 1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(1.0f, 0.0f); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f, -1.0f, 1.0f);&amp;nbsp; // Bottom-right of the quad (Front)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnd();&lt;br /&gt;
//********************************************************************** &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f( 1.0f, -1.0f, -1.0f); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(1.0f, 1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f, -1.0f, -1.0f); // Bottom-left of the quad (Back)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f(-1.0f, -1.0f, -1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(0.0f, 1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f, -1.0f, -1.0f); // Bottom-right of the quad (Back)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f(-1.0f,&amp;nbsp; 1.0f, -1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(0.0f, 0.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f,&amp;nbsp; 1.0f, -1.0f); // Top-right of the quad (Back)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f( 1.0f,&amp;nbsp; 1.0f, -1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(1.0f, 0.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f,&amp;nbsp; 1.0f, -1.0f); // Top-left of the quad (Back)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnd();&lt;br /&gt;
//********************************************************************** &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f(-1.0f,&amp;nbsp; 1.0f,&amp;nbsp; 1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(1.0f, 1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f,&amp;nbsp; 1.0f,&amp;nbsp; 1.0f); // Top-right of the quad (Left)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f(-1.0f,&amp;nbsp; 1.0f, -1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(0.0f, 1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f,&amp;nbsp; 1.0f, -1.0f); // Top-left of the quad (Left)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f(-1.0f, -1.0f, -1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(0.0f, 0.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f, -1.0f, -1.0f); // Bottom-left of the quad (Left)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f(-1.0f, -1.0f,&amp;nbsp; 1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(1.0f, 0.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f, -1.0f,&amp;nbsp; 1.0f); // Bottom-right of the quad (Left)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnd();&lt;br /&gt;
//**********************************************************************&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f( 1.0f,&amp;nbsp; 1.0f, -1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(1.0f, 1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f,&amp;nbsp; 1.0f, -1.0f); // Top-right of the quad (Right)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f( 1.0f,&amp;nbsp; 1.0f,&amp;nbsp; 1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(0.0f, 1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f,&amp;nbsp; 1.0f,&amp;nbsp; 1.0f); // Top-left of the quad (Right)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f( 1.0f, -1.0f,&amp;nbsp; 1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(0.0f, 0.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f, -1.0f,&amp;nbsp; 1.0f); // Bottom-left of the quad (Right)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f( 1.0f, -1.0f, -1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(1.0f, 0.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f, -1.0f, -1.0f); // Bottom-right of the quad (Right)&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; glEnd(); &lt;br /&gt;
}&lt;br /&gt;
//*************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Will handle the resizing of the screen&lt;br /&gt;
void changeSize(int w, int h)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; if (h == 0)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h = 1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; float ratio =&amp;nbsp; w * 1.0 / h;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // Use the Projection Matrix&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glMatrixMode(GL_PROJECTION);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glLoadIdentity();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set the viewport to be the entire window&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glViewport(0, 0, w, h);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set the correct perspective.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; gluPerspective(45.0f, ratio, 0.1f, 150.0f);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get Back to the Modelview&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glMatrixMode(GL_MODELVIEW);&lt;br /&gt;
}&lt;br /&gt;
//****************************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//New&lt;br /&gt;
void computePos(float deltaMove)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; x += deltaMove * lx * 0.1f;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; z += deltaMove * lz * 0.1f;&lt;br /&gt;
}&lt;br /&gt;
//*****************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//New&lt;br /&gt;
void computeDir(float deltaAngle)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; angle += deltaAngle;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; lx = sin(angle);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; lz = -cos(angle);&lt;br /&gt;
}&lt;br /&gt;
//****************************************************************** &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//New&lt;br /&gt;
void computeUp(float deltaUp)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; y += deltaUp *.01f;&lt;br /&gt;
}&lt;br /&gt;
//******************************************************************&lt;br /&gt;
&lt;br /&gt;
void renderScene(void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //movement has occured&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if (deltaMove)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;computePos(deltaMove);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if (deltaAngle)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;computeDir(deltaAngle);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if (deltaUp)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;computeUp(deltaUp);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;// Clear Color and Depth Buffers&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;// Reset transformations&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;glLoadIdentity();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;// Set the camera&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //If conditions act as wall boundaries&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if(y &amp;lt; 1)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;y = 1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if(y &amp;gt;= 15)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;y = 14;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if(x &amp;gt; 49)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;x = 49;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if(x &amp;lt; -49)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;x = -49;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if(z &amp;lt; -49)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;z = -49;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if(z &amp;gt; 49)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;z = 49;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gluLookAt(&amp;nbsp;&amp;nbsp;&amp;nbsp; x, y, z,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; x+lx, y,&amp;nbsp; z+lz,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0f, 1.0f,&amp;nbsp; 0.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Draw stone walls**************************************************************&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBindTexture(GL_TEXTURE_2D, texture_stone);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnable( GL_TEXTURE_2D );&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f( 50.0f, 50.0f, 50.0f); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(50.0f, 50.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 50.0f,&amp;nbsp; 50.0f, 50.0f);&amp;nbsp; // Top-right of the quad (Front)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f(-50.0f,&amp;nbsp; 50.0f, 50.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(0.0f, 50.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-50.0f,&amp;nbsp; 50.0f, 50.0f);&amp;nbsp; // Top-left of the quad (Front)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f(-50.0f, -50.0f, 50.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(0.0f, 0.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-50.0f, -50.0f, 50.0f);&amp;nbsp; // Bottom-left of the quad (Front)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f( 50.0f, -50.0f, 50.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(50.0f, 0.0f); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 50.0f, -50.0f, 50.0f);&amp;nbsp; // Bottom-right of the quad (Front)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnd();&lt;br /&gt;
//********************************************************************** &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f( 50.0f, -50.0f, -50.0f); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(50.0f, 50.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 50.0f, -50.0f, -50.0f); // Bottom-left of the quad (Back)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f(-50.0f, -50.0f, -50.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(0.0f, 50.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-50.0f, -50.0f, -50.0f); // Bottom-right of the quad (Back)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f(-50.0f,&amp;nbsp; 50.0f, -50.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(0.0f, 0.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-50.0f,&amp;nbsp; 50.0f, -50.0f); // Top-right of the quad (Back)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f( 50.0f,&amp;nbsp; 50.0f, -50.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(50.0f, 0.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(50.0f,&amp;nbsp; 50.0f, -50.0f); // Top-left of the quad (Back)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnd();&lt;br /&gt;
//********************************************************************** &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f(-50.0f,&amp;nbsp; 50.0f,&amp;nbsp; 50.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(50.0f, 50.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-50.0f,&amp;nbsp; 50.0f,&amp;nbsp; 50.0f); // Top-right of the quad (Left)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f(-50.0f,&amp;nbsp; 50.0f, -50.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(0.0f, 50.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-50.0f,&amp;nbsp; 50.0f, -50.0f); // Top-left of the quad (Left)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f(-50.0f, -50.0f, -50.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(0.0f, 0.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-50.0f, -50.0f, -50.0f); // Bottom-left of the quad (Left)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f(-50.0f, -50.0f,&amp;nbsp; 50.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(50.0f, 0.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-50.0f, -50.0f,&amp;nbsp; 50.0f); // Bottom-right of the quad (Left)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnd();&lt;br /&gt;
//**********************************************************************&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f(50.0f,&amp;nbsp; 50.0f, -50.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(50.0f, 50.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 50.0f,&amp;nbsp; 50.0f, -50.0f); // Top-right of the quad (Right)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f(50.0f, 50.0f, 50.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(0.0f, 50.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 50.0f,&amp;nbsp; 50.0f,&amp;nbsp; 50.0f); // Top-left of the quad (Right)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f( 50.0f, -50.0f,&amp;nbsp; 50.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(0.0f, 0.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(50.0f, -50.0f,&amp;nbsp; 50.0f); // Bottom-left of the quad (Right)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormal3f( 50.0f, -50.0f, -50.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(50.0f, 0.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(50.0f, -50.0f, -50.0f); // Bottom-right of the quad (Right)&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; glEnd(); &lt;br /&gt;
&lt;br /&gt;
//******************************************************************************&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // Draw ground&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glBindTexture(GL_TEXTURE_2D, texture_wood);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;glColor3f(0.9f, 0.9f, 0.9f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;glBegin(GL_QUADS);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoord2f(100.0f, 100.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;glVertex3f(-100.0f, 0.0f, -100.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;glTexCoord2f(50.0f, 100.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;glVertex3f(-100.0f, 0.0f,&amp;nbsp; 100.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;glTexCoord2f(0.0f, 0.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;glVertex3f( 100.0f, 0.0f,&amp;nbsp; 100.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;glTexCoord2f(100.0f, 50.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;glVertex3f( 100.0f, 0.0f, -100.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;glEnd();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;glBindTexture(GL_TEXTURE_2D, texture_space);&amp;nbsp;&amp;nbsp;&amp;nbsp; cubes();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutSwapBuffers();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//****************************************************************************&lt;br /&gt;
&lt;br /&gt;
//Initialization function&lt;br /&gt;
//Will be run once as start up&lt;br /&gt;
void init (void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //Code for displaying instructions onto the terminal&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("\n\n\nhello user\n\n");&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("q to quit the program\n");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("r to reset camera\n"); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("up key: move forward\n");&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; printf("down key: move backward\n");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("left/right key: rotate\n");&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("F1/F2 key: move up/down\n"); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Enable smooth shading of color&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glShadeModel(GL_SMOOTH);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Enable depth test&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnable(GL_DEPTH_TEST);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glClearDepth(1.0f);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glDepthFunc(GL_LEQUAL);&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //For a nice perspecitve view&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; texture_stone = loadBMP_custom("stone.bmp", texture_stone);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; texture_wood= loadBMP_custom("wood.bmp", texture_wood);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; texture_space = loadBMP_custom("space.bmp", texture_space); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnable( GL_TEXTURE_2D );&lt;br /&gt;
}&amp;nbsp; &lt;br /&gt;
//********************************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Handles for pressing down on keys&lt;br /&gt;
void pressKey(int key, int xx, int yy)&lt;br /&gt;
&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (key)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case GLUT_KEY_LEFT : deltaAngle = -0.05f; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case GLUT_KEY_RIGHT : deltaAngle = 0.05f; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case GLUT_KEY_UP : deltaMove = 5.0f; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case GLUT_KEY_DOWN : deltaMove = -5.0f; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case GLUT_KEY_F1: deltaUp = 5.0f; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case GLUT_KEY_F2: deltaUp = -5.0f; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Handles for release of the keys&lt;br /&gt;
void releaseKey(int key, int x, int y)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (key)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case GLUT_KEY_LEFT :&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case GLUT_KEY_RIGHT : deltaAngle = 0.0f; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case GLUT_KEY_UP :&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case GLUT_KEY_DOWN : deltaMove = 0; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case GLUT_KEY_F1: &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case GLUT_KEY_F2: deltaUp = 0.0f; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Handles simple keys&lt;br /&gt;
void keyboard (unsigned char key, int xs, int ys)&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch(key)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 'q':&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit(0);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case 'r':&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x=0.0f;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; z=5.0f;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; y = 1.0f;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lx=0.0f;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lz=-1.0f;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; deltaAngle = 0.0f;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; deltaMove = 0.0f;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; deltaUp = 0.0f;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gluLookAt(&amp;nbsp;&amp;nbsp; &amp;nbsp;x, y, z,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x+lx, y,&amp;nbsp; z+lz,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0f, 1.0f,&amp;nbsp; 0.0f);&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; default:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//********************************************************************************&lt;br /&gt;
&lt;br /&gt;
//Main for our program&lt;br /&gt;
//Place at bottom of file&lt;br /&gt;
int main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // init GLUT and create window&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // initalize variables and create window&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutInit(&amp;amp;argc, argv);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutInitWindowPosition(100,100);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutInitWindowSize(500,500);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutCreateWindow("World Crawl Tutorial Part Three");&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //GLUT CALLBACKS&lt;br /&gt;
&amp;nbsp; &amp;nbsp; //init will handle initialisations upon start up&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; init();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; //function for actual rendering &lt;br /&gt;
&amp;nbsp; &amp;nbsp; glutDisplayFunc(renderScene);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutIdleFunc(renderScene); &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //function for handling resizes&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutReshapeFunc(changeSize);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; //function for handling keyboard events&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutKeyboardFunc(keyboard);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutSpecialFunc(pressKey);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutIgnoreKeyRepeat(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutSpecialUpFunc(releaseKey); &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // enter GLUT event processing cycle&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutMainLoop();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //This should never hit&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;
}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/290475634689485525-7884224806571425388?l=willisuvic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://willisuvic.blogspot.com/feeds/7884224806571425388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://willisuvic.blogspot.com/2012/04/tutorial-part-4c-opengl-linux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/290475634689485525/posts/default/7884224806571425388?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/290475634689485525/posts/default/7884224806571425388?v=2'/><link rel='alternate' type='text/html' href='http://willisuvic.blogspot.com/2012/04/tutorial-part-4c-opengl-linux.html' title='Tutorial Part 4:C++, OpenGL, Linux'/><author><name>kevin willis</name><uri>http://www.blogger.com/profile/16061203339512755140</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='18' src='http://2.bp.blogspot.com/_nKEd7EWdGRE/S2U7j0THbkI/AAAAAAAAACA/PxIemzY4KeY/S220/001.JPG'/></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;CUYAQH09fyp7ImA9WhVWFEw.&quot;'><id>tag:blogger.com,1999:blog-290475634689485525.post-5750972081012591234</id><published>2012-04-25T19:36:00.003-07:00</published><updated>2012-04-25T21:05:41.367-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-04-25T21:05:41.367-07:00</app:edited><title>World Crawl Tutorial Part 3: C++, OpenGl, linux</title><content type='html'>Tutorial Part Three&lt;br /&gt;
Compilation: g++ -o crawl crawl.cpp -lglut -lGLU - lGL&lt;br /&gt;
run: ./crawl&lt;br /&gt;
&lt;br /&gt;
Implementations for this tutorial&lt;br /&gt;
Allow Movement&lt;br /&gt;
New functions &lt;br /&gt;
void computePos(float deltaMove)&lt;br /&gt;
void computeDir(float deltaAngle)&lt;br /&gt;
void computeUp(float deltaUp)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
register callbacks&lt;br /&gt;
glutSpecialFunc(pressKey);&lt;br /&gt;
glutIgnoreKeyRepeat(1);&lt;br /&gt;
glutSpecialUpFunc(releaseKey);&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
#include &amp;lt;math.h&amp;gt;&lt;br /&gt;
#include &amp;lt;GL/glut.h&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;algorithm&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Global Variables&lt;br /&gt;
// Camera direction variables&lt;br /&gt;
float lx=0.0f;&lt;br /&gt;
float lz=-1.0f;&lt;br /&gt;
&lt;br /&gt;
// XYZ position of the camera&lt;br /&gt;
float x=0.0f;&lt;br /&gt;
float z=5.0f;&lt;br /&gt;
float y = 1.0f;&lt;br /&gt;
&lt;br /&gt;
//New global variables &lt;br /&gt;
float deltaAngle = 0.0f;&lt;br /&gt;
float deltaMove = 0.0f;&lt;br /&gt;
float deltaUp = 0.0f; &lt;br /&gt;
float angle = 0.0f;&lt;br /&gt;
//******************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Function for drawing a cube&lt;br /&gt;
void cubes()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glColor3f(1.0f, 1.0f, 1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glTranslatef(0.0f ,0.75f, 0.0f);&lt;br /&gt;
&lt;br /&gt;
// Drawing cube with quad&lt;br /&gt;
//***********************************************************&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS);&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f, 1.0f, -1.0f); // Top-right of the quad (Top)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f, 1.0f, -1.0f); // Top-left of the quad (Top)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f, 1.0f,&amp;nbsp; 1.0f); // Bottom-left of the quad (Top)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f, 1.0f,&amp;nbsp; 1.0f); // Bottom-right of the quad (Top)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnd();&lt;br /&gt;
//************************************************************&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f, -1.0f,&amp;nbsp; 1.0f); // Top-right of the quad (Bottom)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f, -1.0f,&amp;nbsp; 1.0f); // Top-left of the quad (Bottom)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f, -1.0f, -1.0f); // Bottom-left of the quad (Bottom)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f, -1.0f, -1.0f); // Bottom-right of the quad (Bottom)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnd();&lt;br /&gt;
//************************************************************&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f,&amp;nbsp; 1.0f, 1.0f);&amp;nbsp; // Top-right of the quad (Front)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f,&amp;nbsp; 1.0f, 1.0f);&amp;nbsp; // Top-left of the quad (Front)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f, -1.0f, 1.0f);&amp;nbsp; // Bottom-left of the quad (Front)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f, -1.0f, 1.0f);&amp;nbsp; // Bottom-right of the quad (Front)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnd();&lt;br /&gt;
//*************************************************************&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f, -1.0f, -1.0f); // Bottom-left of the quad (Back)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f, -1.0f, -1.0f); // Bottom-right of the quad (Back)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f,&amp;nbsp; 1.0f, -1.0f); // Top-right of the quad (Back)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f,&amp;nbsp; 1.0f, -1.0f); // Top-left of the quad (Back)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnd();&lt;br /&gt;
//***********************************************************&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f,&amp;nbsp; 1.0f,&amp;nbsp; 1.0f); // Top-right of the quad (Left)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f,&amp;nbsp; 1.0f, -1.0f); // Top-left of the quad (Left)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f, -1.0f, -1.0f); // Bottom-left of the quad (Left)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f, -1.0f,&amp;nbsp; 1.0f); // Bottom-right of the quad (Left)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnd();&lt;br /&gt;
//*************************************************************&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f,&amp;nbsp; 1.0f, -1.0f); // Top-right of the quad (Right)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f,&amp;nbsp; 1.0f,&amp;nbsp; 1.0f); // Top-left of the quad (Right)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f, -1.0f,&amp;nbsp; 1.0f); // Bottom-left of the quad (Right)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f, -1.0f, -1.0f); // Bottom-right of the quad (Right)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; glEnd(); &lt;br /&gt;
}&lt;br /&gt;
//*************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Will handle the resizing of the screen&lt;br /&gt;
void changeSize(int w, int h)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; if (h == 0)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h = 1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; float ratio =&amp;nbsp; w * 1.0 / h;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // Use the Projection Matrix&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glMatrixMode(GL_PROJECTION);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glLoadIdentity();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set the viewport to be the entire window&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glViewport(0, 0, w, h);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set the correct perspective.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; gluPerspective(45.0f, ratio, 0.1f, 150.0f);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get Back to the Modelview&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glMatrixMode(GL_MODELVIEW);&lt;br /&gt;
}&lt;br /&gt;
//****************************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//New&lt;br /&gt;
void computePos(float deltaMove)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; x += deltaMove * lx * 0.1f;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; z += deltaMove * lz * 0.1f;&lt;br /&gt;
}&lt;br /&gt;
//*****************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//New&lt;br /&gt;
void computeDir(float deltaAngle)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; angle += deltaAngle;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; lx = sin(angle);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; lz = -cos(angle);&lt;br /&gt;
}&lt;br /&gt;
//****************************************************************** &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//New&lt;br /&gt;
void computeUp(float deltaUp)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; y += deltaUp *.01f;&lt;br /&gt;
}&lt;br /&gt;
//******************************************************************&lt;br /&gt;
&lt;br /&gt;
void renderScene(void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //movement has occured&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if (deltaMove)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;computePos(deltaMove);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if (deltaAngle)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;computeDir(deltaAngle);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if (deltaUp)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;computeUp(deltaUp);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;// Clear Color and Depth Buffers&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;// Reset transformations&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;glLoadIdentity();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;// Set the camera&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //If conditions act as wall boundaries&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if(y &amp;lt; 1)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;y = 1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if(y &amp;gt;= 15)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;y = 14;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if(x &amp;gt; 49)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;x = 49;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if(x &amp;lt; -49)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;x = -49;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if(z &amp;lt; -49)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;z = -49;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if(z &amp;gt; 49)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;z = 49;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gluLookAt(&amp;nbsp;&amp;nbsp;&amp;nbsp; x, y, z,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; x+lx, y,&amp;nbsp; z+lz,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0f, 1.0f,&amp;nbsp; 0.0f);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glColor3f(.2f, .8f, 1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 50.0f,&amp;nbsp; 50.0f, 50.0f);&amp;nbsp; // Top-right of the quad (Front)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-50.0f,&amp;nbsp; 50.0f, 50.0f);&amp;nbsp; // Top-left of the quad (Front) &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-50.0f, -50.0f, 50.0f);&amp;nbsp; // Bottom-left of the quad (Front)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 50.0f, -50.0f, 50.0f);&amp;nbsp; // Bottom-right of the quad (Front)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnd();&lt;br /&gt;
//**********************************************************************&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 50.0f, -50.0f, -50.0f); // Bottom-left of the quad (Back)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-50.0f, -50.0f, -50.0f); // Bottom-right of the quad (Back)&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-50.0f,&amp;nbsp; 50.0f, -50.0f); // Top-right of the quad (Back)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(50.0f,&amp;nbsp; 50.0f, -50.0f); // Top-left of the quad (Back)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnd();&lt;br /&gt;
//**********************************************************************&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-50.0f,&amp;nbsp; 50.0f,&amp;nbsp; 50.0f); // Top-right of the quad (Left)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-50.0f,&amp;nbsp; 50.0f, -50.0f); // Top-left of the quad (Left)&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-50.0f, -50.0f, -50.0f); // Bottom-left of the quad (Left)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-50.0f, -50.0f,&amp;nbsp; 50.0f); // Bottom-right of the quad (Left)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnd();&lt;br /&gt;
//**********************************************************************&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 50.0f,&amp;nbsp; 50.0f, -50.0f); // Top-right of the quad (Right)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 50.0f,&amp;nbsp; 50.0f,&amp;nbsp; 50.0f); // Top-left of the quad (Right)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(50.0f, -50.0f,&amp;nbsp; 50.0f); // Bottom-left of the quad (Right)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(50.0f, -50.0f, -50.0f); // Bottom-right of the quad (Right)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; glEnd(); &lt;br /&gt;
&lt;br /&gt;
//******************************************************************************&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // Draw ground&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glColor3f(0.9f, 0.9f, 0.9f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-100.0f, 0.0f, -100.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-100.0f, 0.0f,&amp;nbsp; 100.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 100.0f, 0.0f,&amp;nbsp; 100.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 100.0f, 0.0f, -100.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnd();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; cubes();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutSwapBuffers();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//****************************************************************************&lt;br /&gt;
&lt;br /&gt;
//Initialization function&lt;br /&gt;
//Will be run once as start up&lt;br /&gt;
void init (void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //Code for displaying instructions onto the terminal&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("\n\n\nhello user\n\n");&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("q to quit the program\n");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("r to reset camera\n"); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("up key: move forward\n");&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; printf("down key: move backward\n");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("left/right key: rotate\n");&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("F1/F2 key: move up/down\n"); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Enable smooth shading of color&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glShadeModel(GL_SMOOTH);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Enable depth test&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnable(GL_DEPTH_TEST);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glClearDepth(1.0f);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glDepthFunc(GL_LEQUAL);&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //For a nice perspecitve view&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); &lt;br /&gt;
}&amp;nbsp; &lt;br /&gt;
//********************************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//New&lt;br /&gt;
//Handles for pressing down on keys&lt;br /&gt;
void pressKey(int key, int xx, int yy)&lt;br /&gt;
&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (key)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case GLUT_KEY_LEFT : deltaAngle = -0.05f; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case GLUT_KEY_RIGHT : deltaAngle = 0.05f; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case GLUT_KEY_UP : deltaMove = 5.0f; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case GLUT_KEY_DOWN : deltaMove = -5.0f; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case GLUT_KEY_F1: deltaUp = 5.0f; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case GLUT_KEY_F2: deltaUp = -5.0f; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//New&lt;br /&gt;
//Handles for release of the keys&lt;br /&gt;
void releaseKey(int key, int x, int y)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (key)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case GLUT_KEY_LEFT :&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case GLUT_KEY_RIGHT : deltaAngle = 0.0f; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case GLUT_KEY_UP :&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case GLUT_KEY_DOWN : deltaMove = 0; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case GLUT_KEY_F1: &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case GLUT_KEY_F2: deltaUp = 0.0f; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Handles simple keys&lt;br /&gt;
void keyboard (unsigned char key, int xs, int ys)&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch(key)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 'q':&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit(0);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case 'r':&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x=0.0f;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; z=5.0f;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; y = 1.0f;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lx=0.0f;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lz=-1.0f;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; deltaAngle = 0.0f;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; deltaMove = 0.0f;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; deltaUp = 0.0f;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gluLookAt(&amp;nbsp;&amp;nbsp; &amp;nbsp;x, y, z,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x+lx, y,&amp;nbsp; z+lz,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0f, 1.0f,&amp;nbsp; 0.0f);&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; default:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//********************************************************************************&lt;br /&gt;
&lt;br /&gt;
//Main for our program&lt;br /&gt;
//Place at bottom of file&lt;br /&gt;
int main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // init GLUT and create window&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // initalize variables and create window&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutInit(&amp;amp;argc, argv);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutInitWindowPosition(100,100);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutInitWindowSize(500,500);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutCreateWindow("World Crawl Tutorial Part Three");&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //GLUT CALLBACKS&lt;br /&gt;
&amp;nbsp; &amp;nbsp; //init will handle initialisations upon start up&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; init();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; //function for actual rendering &lt;br /&gt;
&amp;nbsp; &amp;nbsp; glutDisplayFunc(renderScene);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutIdleFunc(renderScene); &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //function for handling resizes&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutReshapeFunc(changeSize);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; //function for handling keyboard events&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutKeyboardFunc(keyboard);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutSpecialFunc(pressKey);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutIgnoreKeyRepeat(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutSpecialUpFunc(releaseKey); &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // enter GLUT event processing cycle&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutMainLoop();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //This should never hit&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;
}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/290475634689485525-5750972081012591234?l=willisuvic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://willisuvic.blogspot.com/feeds/5750972081012591234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://willisuvic.blogspot.com/2012/04/world-crawl-tutorial-part-3-c-opengl.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/290475634689485525/posts/default/5750972081012591234?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/290475634689485525/posts/default/5750972081012591234?v=2'/><link rel='alternate' type='text/html' href='http://willisuvic.blogspot.com/2012/04/world-crawl-tutorial-part-3-c-opengl.html' title='World Crawl Tutorial Part 3: C++, OpenGl, linux'/><author><name>kevin willis</name><uri>http://www.blogger.com/profile/16061203339512755140</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='18' src='http://2.bp.blogspot.com/_nKEd7EWdGRE/S2U7j0THbkI/AAAAAAAAACA/PxIemzY4KeY/S220/001.JPG'/></author><thr:total>1</thr:total></entry><entry gd:etag='W/&quot;CUYBRXszfSp7ImA9WhVWFEw.&quot;'><id>tag:blogger.com,1999:blog-290475634689485525.post-533470655995507809</id><published>2012-04-25T18:42:00.001-07:00</published><updated>2012-04-25T21:05:54.585-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-04-25T21:05:54.585-07:00</app:edited><title>World Crawl Part Two: C++, Opengl, linux</title><content type='html'>Tutorial Part Two&lt;br /&gt;
Compilation: g++ -o crawl crawl.cpp -lglut -lGLU - lGL&lt;br /&gt;
run: ./crawl&lt;br /&gt;
&lt;br /&gt;
Implementations for this tutorial&lt;br /&gt;
Function for resizing the screen&lt;br /&gt;
register callbacks&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; glutDisplayFunc(renderScene);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutIdleFunc(renderScene); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutReshapeFunc(changeSize);&lt;br /&gt;
&lt;br /&gt;
Capabilities to render objects in scene&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Draws a cube, a floor, a wall &lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
#include &amp;lt;math.h&amp;gt;&lt;br /&gt;
#include &amp;lt;GL/glut.h&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;algorithm&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Global Variables&lt;br /&gt;
// Camera direction variables&lt;br /&gt;
float lx=0.0f;&lt;br /&gt;
float lz=-1.0f;&lt;br /&gt;
&lt;br /&gt;
// XYZ position of the camera&lt;br /&gt;
float x=0.0f;&lt;br /&gt;
float z=5.0f;&lt;br /&gt;
float y = 1.0f;&lt;br /&gt;
//******************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Function for drawing a cube&lt;br /&gt;
void cubes()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glColor3f(1.0f, 1.0f, 1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glTranslatef(0.0f ,0.75f, 0.0f);&lt;br /&gt;
&lt;br /&gt;
// Drawing cube with quad&lt;br /&gt;
//***********************************************************&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS);&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f, 1.0f, -1.0f); // Top-right of the quad (Top)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f, 1.0f, -1.0f); // Top-left of the quad (Top)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f, 1.0f,&amp;nbsp; 1.0f); // Bottom-left of the quad (Top)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f, 1.0f,&amp;nbsp; 1.0f); // Bottom-right of the quad (Top)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnd();&lt;br /&gt;
//************************************************************&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f, -1.0f,&amp;nbsp; 1.0f); // Top-right of the quad (Bottom)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f, -1.0f,&amp;nbsp; 1.0f); // Top-left of the quad (Bottom)&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f, -1.0f, -1.0f); // Bottom-left of the quad (Bottom)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f, -1.0f, -1.0f); // Bottom-right of the quad (Bottom)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnd();&lt;br /&gt;
//************************************************************&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f,&amp;nbsp; 1.0f, 1.0f);&amp;nbsp; // Top-right of the quad (Front)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f,&amp;nbsp; 1.0f, 1.0f);&amp;nbsp; // Top-left of the quad (Front)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f, -1.0f, 1.0f);&amp;nbsp; // Bottom-left of the quad (Front)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f, -1.0f, 1.0f);&amp;nbsp; // Bottom-right of the quad (Front)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnd();&lt;br /&gt;
//*************************************************************&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f, -1.0f, -1.0f); // Bottom-left of the quad (Back)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f, -1.0f, -1.0f); // Bottom-right of the quad (Back)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f,&amp;nbsp; 1.0f, -1.0f); // Top-right of the quad (Back)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f,&amp;nbsp; 1.0f, -1.0f); // Top-left of the quad (Back)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnd();&lt;br /&gt;
//***********************************************************&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f,&amp;nbsp; 1.0f,&amp;nbsp; 1.0f); // Top-right of the quad (Left)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f,&amp;nbsp; 1.0f, -1.0f); // Top-left of the quad (Left)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f, -1.0f, -1.0f); // Bottom-left of the quad (Left)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-1.0f, -1.0f,&amp;nbsp; 1.0f); // Bottom-right of the quad (Left)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnd();&lt;br /&gt;
//*************************************************************&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f,&amp;nbsp; 1.0f, -1.0f); // Top-right of the quad (Right)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f,&amp;nbsp; 1.0f,&amp;nbsp; 1.0f); // Top-left of the quad (Right)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f, -1.0f,&amp;nbsp; 1.0f); // Bottom-left of the quad (Right)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 1.0f, -1.0f, -1.0f); // Bottom-right of the quad (Right)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; glEnd(); &lt;br /&gt;
}&lt;br /&gt;
//*************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Will handle the resizing of the screen&lt;br /&gt;
void changeSize(int w, int h)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; if (h == 0)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h = 1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; float ratio =&amp;nbsp; w * 1.0 / h;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // Use the Projection Matrix&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glMatrixMode(GL_PROJECTION);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glLoadIdentity();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set the viewport to be the entire window&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glViewport(0, 0, w, h);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set the correct perspective.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; gluPerspective(45.0f, ratio, 0.1f, 150.0f);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get Back to the Modelview&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glMatrixMode(GL_MODELVIEW);&lt;br /&gt;
}&lt;br /&gt;
//****************************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void renderScene(void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // Clear Color and Depth Buffers&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // Reset transformations&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glLoadIdentity();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gluLookAt(&amp;nbsp;&amp;nbsp;&amp;nbsp; x, y, z,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; x+lx, y,&amp;nbsp; z+lz,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0f, 1.0f,&amp;nbsp; 0.0f);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glColor3f(.2f, .8f, 1.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 50.0f,&amp;nbsp; 50.0f, 50.0f);&amp;nbsp; // Top-right of the quad (Front)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-50.0f,&amp;nbsp; 50.0f, 50.0f);&amp;nbsp; // Top-left of the quad (Front) &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-50.0f, -50.0f, 50.0f);&amp;nbsp; // Bottom-left of the quad (Front)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 50.0f, -50.0f, 50.0f);&amp;nbsp; // Bottom-right of the quad (Front)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnd();&lt;br /&gt;
//**********************************************************************&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 50.0f, -50.0f, -50.0f); // Bottom-left of the quad (Back)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-50.0f, -50.0f, -50.0f); // Bottom-right of the quad (Back)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-50.0f,&amp;nbsp; 50.0f, -50.0f); // Top-right of the quad (Back)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(50.0f,&amp;nbsp; 50.0f, -50.0f); // Top-left of the quad (Back)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnd();&lt;br /&gt;
//**********************************************************************&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-50.0f,&amp;nbsp; 50.0f,&amp;nbsp; 50.0f); // Top-right of the quad (Left)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-50.0f,&amp;nbsp; 50.0f, -50.0f); // Top-left of the quad (Left)&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-50.0f, -50.0f, -50.0f); // Bottom-left of the quad (Left)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-50.0f, -50.0f,&amp;nbsp; 50.0f); // Bottom-right of the quad (Left)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnd();&lt;br /&gt;
//**********************************************************************&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 50.0f,&amp;nbsp; 50.0f, -50.0f); // Top-right of the quad (Right)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 50.0f,&amp;nbsp; 50.0f,&amp;nbsp; 50.0f); // Top-left of the quad (Right)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(50.0f, -50.0f,&amp;nbsp; 50.0f); // Bottom-left of the quad (Right)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(50.0f, -50.0f, -50.0f); // Bottom-right of the quad (Right)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; glEnd(); &lt;br /&gt;
&lt;br /&gt;
//******************************************************************************&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // Draw ground&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glColor3f(0.9f, 0.9f, 0.9f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glBegin(GL_QUADS);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-100.0f, 0.0f, -100.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f(-100.0f, 0.0f,&amp;nbsp; 100.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 100.0f, 0.0f,&amp;nbsp; 100.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; glVertex3f( 100.0f, 0.0f, -100.0f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnd();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; cubes();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutSwapBuffers();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//****************************************************************************&lt;br /&gt;
&lt;br /&gt;
//Initialization function&lt;br /&gt;
//Will be run once as start up&lt;br /&gt;
void init (void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //Code for displaying instructions onto the terminal&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("\n\n\nhello user\n\n");&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("q to quit the program\n");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Enable smooth shading of color&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glShadeModel(GL_SMOOTH);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Enable depth test&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnable(GL_DEPTH_TEST);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glClearDepth(1.0f);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glDepthFunc(GL_LEQUAL);&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //For a nice perspecitve view&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); &lt;br /&gt;
}&amp;nbsp; &lt;br /&gt;
//********************************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Handles simple keys&lt;br /&gt;
void keyboard (unsigned char key, int xs, int ys)&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch(key)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 'q':&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit(0);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; default:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
//********************************************************************************&lt;br /&gt;
&lt;br /&gt;
//Main for our program&lt;br /&gt;
//Place at bottom of file&lt;br /&gt;
int main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // init GLUT and create window&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // initalize variables and create window&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutInit(&amp;amp;argc, argv);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutInitWindowPosition(100,100);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutInitWindowSize(500,500);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutCreateWindow("World Crawl Tutorial Part Two");&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //GLUT CALLBACKS&lt;br /&gt;
&amp;nbsp; &amp;nbsp; //init will handle initialisations upon start up&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; init();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; //function for actual rendering &lt;br /&gt;
&amp;nbsp; &amp;nbsp; glutDisplayFunc(renderScene);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutIdleFunc(renderScene); &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //function for handling resizes&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutReshapeFunc(changeSize);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; //function for handling keyboard events&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutKeyboardFunc(keyboard);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // enter GLUT event processing cycle&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutMainLoop();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //This should never hit&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-ZoapEPkn61M/T5ioDZRMQKI/AAAAAAAAAKk/6qBz26ycKZk/s1600/sample2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="161" src="http://1.bp.blogspot.com/-ZoapEPkn61M/T5ioDZRMQKI/AAAAAAAAAKk/6qBz26ycKZk/s320/sample2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/290475634689485525-533470655995507809?l=willisuvic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://willisuvic.blogspot.com/feeds/533470655995507809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://willisuvic.blogspot.com/2012/04/world-crawl-part-two-c-opengl-linux.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/290475634689485525/posts/default/533470655995507809?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/290475634689485525/posts/default/533470655995507809?v=2'/><link rel='alternate' type='text/html' href='http://willisuvic.blogspot.com/2012/04/world-crawl-part-two-c-opengl-linux.html' title='World Crawl Part Two: C++, Opengl, linux'/><author><name>kevin willis</name><uri>http://www.blogger.com/profile/16061203339512755140</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='18' src='http://2.bp.blogspot.com/_nKEd7EWdGRE/S2U7j0THbkI/AAAAAAAAACA/PxIemzY4KeY/S220/001.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-ZoapEPkn61M/T5ioDZRMQKI/AAAAAAAAAKk/6qBz26ycKZk/s72-c/sample2.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry gd:etag='W/&quot;CE4GSH88eyp7ImA9WhVWFEw.&quot;'><id>tag:blogger.com,1999:blog-290475634689485525.post-3462175873382361365</id><published>2012-04-25T17:44:00.004-07:00</published><updated>2012-04-25T21:02:09.173-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-04-25T21:02:09.173-07:00</app:edited><title>World Crawl Tutorial C++, OpenGL, Linux</title><content type='html'>Going to take the tutorials very slow and keep adding on.&lt;br /&gt;
Ideal for first 3D course for University students. Click an ad if you like, I get money that way. cheers&lt;br /&gt;
&lt;br /&gt;
Part One: (starting simple) Implementation of key board event&lt;br /&gt;
&lt;br /&gt;
Notes for compilation: assuming you saved it as crawl and are in the right directory.&lt;br /&gt;
&lt;br /&gt;
g++ -o crawl crawl.cpp -lglut -lGLU -lGL&lt;br /&gt;
or simply make your own makefile. &lt;br /&gt;
run by ./crawl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Will add on a lot to functions as tutorial progresses&lt;br /&gt;
The final product of this section of code should be a transparent screen&lt;br /&gt;
that can be closed by hitting the keyboard letter q&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
#include &amp;lt;math.h&amp;gt;&lt;br /&gt;
#include &amp;lt;GL/glut.h&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;algorithm&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Initialization function&lt;br /&gt;
//Will be run once as start up&lt;br /&gt;
//*****************************************************************&lt;br /&gt;
void init (void) &lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //Code for displaying instructions onto the terminal&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;printf("\n\n\nhello user\n\n");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("q to quit the program\n");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Enable smooth shading of color &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;glShadeModel(GL_SMOOTH);&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; //Enable depth test &amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnable(GL_DEPTH_TEST);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glClearDepth(1.0f);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glDepthFunc(GL_LEQUAL);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //For a nice perspecitve view&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);&amp;nbsp; &lt;br /&gt;
}&lt;br /&gt;
//****************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Handles simple keys&lt;br /&gt;
void keyboard (unsigned char key, int xs, int ys)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; switch(key)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 'q':&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit(0);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; default:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
//*****************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Main for our program&lt;br /&gt;
//Place at bottom of file&lt;br /&gt;
int main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // init GLUT and create window&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // initalize variables and create window&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutInit(&amp;amp;argc, argv);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutInitWindowPosition(100,100);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutInitWindowSize(500,500);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutCreateWindow("World Crawl Tutorial Part One");&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //init will handle initialisations upon start up&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; init();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //function for handling keyboard events&lt;br /&gt;
&amp;nbsp; &amp;nbsp; glutKeyboardFunc(keyboard);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // enter GLUT event processing cycle&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; glutMainLoop();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //This should never hit&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-GEp3mldh4lA/T5iaeeY9_bI/AAAAAAAAAKY/AzanUj-moOw/s1600/tutorialone.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="168" src="http://2.bp.blogspot.com/-GEp3mldh4lA/T5iaeeY9_bI/AAAAAAAAAKY/AzanUj-moOw/s320/tutorialone.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/290475634689485525-3462175873382361365?l=willisuvic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://willisuvic.blogspot.com/feeds/3462175873382361365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://willisuvic.blogspot.com/2012/04/world-crawl-tutorial-c-opengl-linux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/290475634689485525/posts/default/3462175873382361365?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/290475634689485525/posts/default/3462175873382361365?v=2'/><link rel='alternate' type='text/html' href='http://willisuvic.blogspot.com/2012/04/world-crawl-tutorial-c-opengl-linux.html' title='World Crawl Tutorial C++, OpenGL, Linux'/><author><name>kevin willis</name><uri>http://www.blogger.com/profile/16061203339512755140</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='18' src='http://2.bp.blogspot.com/_nKEd7EWdGRE/S2U7j0THbkI/AAAAAAAAACA/PxIemzY4KeY/S220/001.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-GEp3mldh4lA/T5iaeeY9_bI/AAAAAAAAAKY/AzanUj-moOw/s72-c/tutorialone.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;CUMCRXwycSp7ImA9WhVXFE4.&quot;'><id>tag:blogger.com,1999:blog-290475634689485525.post-2067127758889927240</id><published>2012-04-14T12:57:00.002-07:00</published><updated>2012-04-14T12:57:44.299-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-04-14T12:57:44.299-07:00</app:edited><title>Particle system: tutorial to come</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-UVB-le1R_to/T4nWouG0mfI/AAAAAAAAAKQ/WEJdKRhVobk/s1600/fire.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" src="http://4.bp.blogspot.com/-UVB-le1R_to/T4nWouG0mfI/AAAAAAAAAKQ/WEJdKRhVobk/s320/fire.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/290475634689485525-2067127758889927240?l=willisuvic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://willisuvic.blogspot.com/feeds/2067127758889927240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://willisuvic.blogspot.com/2012/04/particle-system-tutorial-to-come.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/290475634689485525/posts/default/2067127758889927240?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/290475634689485525/posts/default/2067127758889927240?v=2'/><link rel='alternate' type='text/html' href='http://willisuvic.blogspot.com/2012/04/particle-system-tutorial-to-come.html' title='Particle system: tutorial to come'/><author><name>kevin willis</name><uri>http://www.blogger.com/profile/16061203339512755140</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='18' src='http://2.bp.blogspot.com/_nKEd7EWdGRE/S2U7j0THbkI/AAAAAAAAACA/PxIemzY4KeY/S220/001.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-UVB-le1R_to/T4nWouG0mfI/AAAAAAAAAKQ/WEJdKRhVobk/s72-c/fire.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;A0UARn84cCp7ImA9WhVXE0g.&quot;'><id>tag:blogger.com,1999:blog-290475634689485525.post-536700031847764758</id><published>2012-04-13T16:20:00.001-07:00</published><updated>2012-04-13T16:20:47.138-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-04-13T16:20:47.138-07:00</app:edited><title>C++ tutorials and art coming after my finals!</title><content type='html'>&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/290475634689485525-536700031847764758?l=willisuvic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://willisuvic.blogspot.com/feeds/536700031847764758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://willisuvic.blogspot.com/2012/04/c-tutorials-and-art-coming-after-my.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/290475634689485525/posts/default/536700031847764758?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/290475634689485525/posts/default/536700031847764758?v=2'/><link rel='alternate' type='text/html' href='http://willisuvic.blogspot.com/2012/04/c-tutorials-and-art-coming-after-my.html' title='C++ tutorials and art coming after my finals!'/><author><name>kevin willis</name><uri>http://www.blogger.com/profile/16061203339512755140</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='18' src='http://2.bp.blogspot.com/_nKEd7EWdGRE/S2U7j0THbkI/AAAAAAAAACA/PxIemzY4KeY/S220/001.JPG'/></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;CEQHRHg5eSp7ImA9WhVXEk0.&quot;'><id>tag:blogger.com,1999:blog-290475634689485525.post-385763410358420994</id><published>2012-03-16T19:05:00.001-07:00</published><updated>2012-04-11T20:45:35.621-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-04-11T20:45:35.621-07:00</app:edited><title>Screen cap of my program</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/-W1SXSghSedg/T2Rkq0t8LHI/AAAAAAAAAJk/W357rMwagg4/s1600/2012-03-06-211808_1366x768_scrot.png"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5720808113535986802" src="http://2.bp.blogspot.com/-W1SXSghSedg/T2Rkq0t8LHI/AAAAAAAAAJk/W357rMwagg4/s400/2012-03-06-211808_1366x768_scrot.png" style="cursor: hand; cursor: pointer; height: 225px; width: 400px;" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/-SqJZLNxhcIY/T2Rk1P5fsVI/AAAAAAAAAJw/BCnKR0KlDWg/s1600/2012-03-06-205041_1366x768_scrot.png"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5720808292630901074" src="http://2.bp.blogspot.com/-SqJZLNxhcIY/T2Rk1P5fsVI/AAAAAAAAAJw/BCnKR0KlDWg/s400/2012-03-06-205041_1366x768_scrot.png" style="cursor: hand; cursor: pointer; height: 225px; width: 400px;" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/290475634689485525-385763410358420994?l=willisuvic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://willisuvic.blogspot.com/feeds/385763410358420994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://willisuvic.blogspot.com/2012/03/screen-cap.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/290475634689485525/posts/default/385763410358420994?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/290475634689485525/posts/default/385763410358420994?v=2'/><link rel='alternate' type='text/html' href='http://willisuvic.blogspot.com/2012/03/screen-cap.html' title='Screen cap of my program'/><author><name>kevin willis</name><uri>http://www.blogger.com/profile/16061203339512755140</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='18' src='http://2.bp.blogspot.com/_nKEd7EWdGRE/S2U7j0THbkI/AAAAAAAAACA/PxIemzY4KeY/S220/001.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-W1SXSghSedg/T2Rkq0t8LHI/AAAAAAAAAJk/W357rMwagg4/s72-c/2012-03-06-211808_1366x768_scrot.png' height='72' width='72'/><thr:total>0</thr:total></entry></feed>