| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -9,74 +9,72 @@ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include <GL/glfw3.h> | 
					 | 
					 | 
					 | 
					#include <GL/glfw3.h> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					int main( void ) | 
					 | 
					 | 
					 | 
					int main(void) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					{ | 
					 | 
					 | 
					 | 
					{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    int width, height, x; | 
					 | 
					 | 
					 | 
					    int width, height, x; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    double t; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    GLFWwindow window; | 
					 | 
					 | 
					 | 
					    GLFWwindow window; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    // Initialise GLFW
 | 
					 | 
					 | 
					 | 
					    // Initialise GLFW
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if( !glfwInit() ) | 
					 | 
					 | 
					 | 
					    if (!glfwInit()) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    { | 
					 | 
					 | 
					 | 
					    { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        fprintf( stderr, "Failed to initialize GLFW\n" ); | 
					 | 
					 | 
					 | 
					        fprintf(stderr, "Failed to initialize GLFW\n"); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        exit( EXIT_FAILURE ); | 
					 | 
					 | 
					 | 
					        exit(EXIT_FAILURE); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    // Open a window and create its OpenGL context
 | 
					 | 
					 | 
					 | 
					    // Open a window and create its OpenGL context
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    window = glfwOpenWindow( 640, 480, GLFW_WINDOWED, "Spinning Triangle", NULL ); | 
					 | 
					 | 
					 | 
					    window = glfwOpenWindow(640, 480, GLFW_WINDOWED, "Spinning Triangle", NULL); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (!window) | 
					 | 
					 | 
					 | 
					    if (!window) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    { | 
					 | 
					 | 
					 | 
					    { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        fprintf( stderr, "Failed to open GLFW window\n" ); | 
					 | 
					 | 
					 | 
					        fprintf(stderr, "Failed to open GLFW window\n"); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					        exit(EXIT_FAILURE); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        glfwTerminate(); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        exit( EXIT_FAILURE ); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    // Ensure we can capture the escape key being pressed below
 | 
					 | 
					 | 
					 | 
					    // Ensure we can capture the escape key being pressed below
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    glfwEnable( window, GLFW_STICKY_KEYS ); | 
					 | 
					 | 
					 | 
					    glfwEnable(window, GLFW_STICKY_KEYS); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    // Enable vertical sync (on cards that support it)
 | 
					 | 
					 | 
					 | 
					    // Enable vertical sync (on cards that support it)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    glfwSwapInterval( 1 ); | 
					 | 
					 | 
					 | 
					    glfwSwapInterval(1); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    do | 
					 | 
					 | 
					 | 
					    do | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    { | 
					 | 
					 | 
					 | 
					    { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        t = glfwGetTime(); | 
					 | 
					 | 
					 | 
					        double t = glfwGetTime(); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        glfwGetMousePos( window, &x, NULL ); | 
					 | 
					 | 
					 | 
					        glfwGetMousePos(window, &x, NULL); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        // Get window size (may be different than the requested size)
 | 
					 | 
					 | 
					 | 
					        // Get window size (may be different than the requested size)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        glfwGetWindowSize( window, &width, &height ); | 
					 | 
					 | 
					 | 
					        glfwGetWindowSize(window, &width, &height); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        // Special case: avoid division by zero below
 | 
					 | 
					 | 
					 | 
					        // Special case: avoid division by zero below
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        height = height > 0 ? height : 1; | 
					 | 
					 | 
					 | 
					        height = height > 0 ? height : 1; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        glViewport( 0, 0, width, height ); | 
					 | 
					 | 
					 | 
					        glViewport(0, 0, width, height); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        // Clear color buffer to black
 | 
					 | 
					 | 
					 | 
					        // Clear color buffer to black
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        glClearColor( 0.0f, 0.0f, 0.0f, 0.0f ); | 
					 | 
					 | 
					 | 
					        glClearColor(0.f, 0.f, 0.f, 0.f); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        glClear( GL_COLOR_BUFFER_BIT ); | 
					 | 
					 | 
					 | 
					        glClear(GL_COLOR_BUFFER_BIT); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        // Select and setup the projection matrix
 | 
					 | 
					 | 
					 | 
					        // Select and setup the projection matrix
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        glMatrixMode( GL_PROJECTION ); | 
					 | 
					 | 
					 | 
					        glMatrixMode(GL_PROJECTION); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        glLoadIdentity(); | 
					 | 
					 | 
					 | 
					        glLoadIdentity(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        gluPerspective( 65.0f, (GLfloat)width/(GLfloat)height, 1.0f, 100.0f ); | 
					 | 
					 | 
					 | 
					        gluPerspective(65.0f, (GLfloat)width/(GLfloat)height, 1.f, 100.0f); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        // Select and setup the modelview matrix
 | 
					 | 
					 | 
					 | 
					        // Select and setup the modelview matrix
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        glMatrixMode( GL_MODELVIEW ); | 
					 | 
					 | 
					 | 
					        glMatrixMode( GL_MODELVIEW ); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        glLoadIdentity(); | 
					 | 
					 | 
					 | 
					        glLoadIdentity(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        gluLookAt( 0.0f, 1.0f, 0.0f,    // Eye-position
 | 
					 | 
					 | 
					 | 
					        gluLookAt(0.f, 1.f, 0.f,    // Eye-position
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                   0.0f, 20.0f, 0.0f,   // View-point
 | 
					 | 
					 | 
					 | 
					                  0.f, 20.f, 0.f,   // View-point
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                   0.0f, 0.0f, 1.0f );  // Up-vector
 | 
					 | 
					 | 
					 | 
					                  0.f, 0.f, 1.f);   // Up-vector
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        // Draw a rotating colorful triangle
 | 
					 | 
					 | 
					 | 
					        // Draw a rotating colorful triangle
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        glTranslatef( 0.0f, 14.0f, 0.0f ); | 
					 | 
					 | 
					 | 
					        glTranslatef(0.f, 14.f, 0.f); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        glRotatef( 0.3f*(GLfloat)x + (GLfloat)t*100.0f, 0.0f, 0.0f, 1.0f ); | 
					 | 
					 | 
					 | 
					        glRotatef(0.3f * (GLfloat) x + (GLfloat) t * 100.f, 0.f, 0.f, 1.f); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        glBegin( GL_TRIANGLES ); | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          glColor3f( 1.0f, 0.0f, 0.0f ); | 
					 | 
					 | 
					 | 
					        glBegin(GL_TRIANGLES); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          glVertex3f( -5.0f, 0.0f, -4.0f ); | 
					 | 
					 | 
					 | 
					        glColor3f(1.f, 0.f, 0.f); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          glColor3f( 0.0f, 1.0f, 0.0f ); | 
					 | 
					 | 
					 | 
					        glVertex3f(-5.f, 0.f, -4.f); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          glVertex3f( 5.0f, 0.0f, -4.0f ); | 
					 | 
					 | 
					 | 
					        glColor3f(0.f, 1.f, 0.f); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          glColor3f( 0.0f, 0.0f, 1.0f ); | 
					 | 
					 | 
					 | 
					        glVertex3f(5.f, 0.f, -4.f); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          glVertex3f( 0.0f, 0.0f, 6.0f ); | 
					 | 
					 | 
					 | 
					        glColor3f(0.f, 0.f, 1.f); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        glVertex3f(0.f, 0.f, 6.f); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        glEnd(); | 
					 | 
					 | 
					 | 
					        glEnd(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        // Swap buffers
 | 
					 | 
					 | 
					 | 
					        // Swap buffers
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -84,12 +82,12 @@ int main( void ) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        glfwPollEvents(); | 
					 | 
					 | 
					 | 
					        glfwPollEvents(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } // Check if the ESC key was pressed or the window was closed
 | 
					 | 
					 | 
					 | 
					    } // Check if the ESC key was pressed or the window was closed
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    while( glfwIsWindow(window) && | 
					 | 
					 | 
					 | 
					    while (glfwIsWindow(window) && | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					           glfwGetKey( window, GLFW_KEY_ESC ) != GLFW_PRESS ); | 
					 | 
					 | 
					 | 
					           glfwGetKey(window, GLFW_KEY_ESC) != GLFW_PRESS); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    // Close OpenGL window and terminate GLFW
 | 
					 | 
					 | 
					 | 
					    // Close OpenGL window and terminate GLFW
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    glfwTerminate(); | 
					 | 
					 | 
					 | 
					    glfwTerminate(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    exit( EXIT_SUCCESS ); | 
					 | 
					 | 
					 | 
					    exit(EXIT_SUCCESS); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
					 | 
					 | 
					
  |