You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
		
		
		
		
		
			
		
			
				
					
					
						
							94 lines
						
					
					
						
							2.7 KiB
						
					
					
				
			
		
		
	
	
							94 lines
						
					
					
						
							2.7 KiB
						
					
					
				| //======================================================================== | |
| // This is a small test application for GLFW. | |
| // The program opens a window (640x480), and renders a spinning colored | |
| // triangle (it is controlled with both the GLFW timer and the mouse). | |
| //======================================================================== | |
|  | |
| #include <stdio.h> | |
| #include <stdlib.h> | |
| #include <GL/glfw.h> | |
|  | |
| 
 | |
| int main( void ) | |
| { | |
|     int width, height, x; | |
|     double t; | |
| 
 | |
|     // Initialise GLFW | |
|     if( !glfwInit() ) | |
|     { | |
|         fprintf( stderr, "Failed to initialize GLFW\n" ); | |
|         exit( EXIT_FAILURE ); | |
|     } | |
| 
 | |
|     // Open a window and create its OpenGL context | |
|     if( !glfwOpenWindow( 640, 480, 0,0,0,0, 0,0, GLFW_WINDOW ) ) | |
|     { | |
|         fprintf( stderr, "Failed to open GLFW window\n" ); | |
| 
 | |
|         glfwTerminate(); | |
|         exit( EXIT_FAILURE ); | |
|     } | |
| 
 | |
|     glfwSetWindowTitle( "Spinning Triangle" ); | |
| 
 | |
|     // Ensure we can capture the escape key being pressed below | |
|     glfwEnable( GLFW_STICKY_KEYS ); | |
| 
 | |
|     // Enable vertical sync (on cards that support it) | |
|     glfwSwapInterval( 1 ); | |
| 
 | |
|     do | |
|     { | |
|         t = glfwGetTime(); | |
|         glfwGetMousePos( &x, NULL ); | |
| 
 | |
|         // Get window size (may be different than the requested size) | |
|         glfwGetWindowSize( &width, &height ); | |
| 
 | |
|         // Special case: avoid division by zero below | |
|         height = height > 0 ? height : 1; | |
| 
 | |
|         glViewport( 0, 0, width, height ); | |
| 
 | |
|         // Clear color buffer to black | |
|         glClearColor( 0.0f, 0.0f, 0.0f, 0.0f ); | |
|         glClear( GL_COLOR_BUFFER_BIT ); | |
| 
 | |
|         // Select and setup the projection matrix | |
|         glMatrixMode( GL_PROJECTION ); | |
|         glLoadIdentity(); | |
|         gluPerspective( 65.0f, (GLfloat)width/(GLfloat)height, 1.0f, 100.0f ); | |
| 
 | |
|         // Select and setup the modelview matrix | |
|         glMatrixMode( GL_MODELVIEW ); | |
|         glLoadIdentity(); | |
|         gluLookAt( 0.0f, 1.0f, 0.0f,    // Eye-position | |
|                    0.0f, 20.0f, 0.0f,   // View-point | |
|                    0.0f, 0.0f, 1.0f );  // Up-vector | |
|  | |
|         // Draw a rotating colorful triangle | |
|         glTranslatef( 0.0f, 14.0f, 0.0f ); | |
|         glRotatef( 0.3f*(GLfloat)x + (GLfloat)t*100.0f, 0.0f, 0.0f, 1.0f ); | |
|         glBegin( GL_TRIANGLES ); | |
|           glColor3f( 1.0f, 0.0f, 0.0f ); | |
|           glVertex3f( -5.0f, 0.0f, -4.0f ); | |
|           glColor3f( 0.0f, 1.0f, 0.0f ); | |
|           glVertex3f( 5.0f, 0.0f, -4.0f ); | |
|           glColor3f( 0.0f, 0.0f, 1.0f ); | |
|           glVertex3f( 0.0f, 0.0f, 6.0f ); | |
|         glEnd(); | |
| 
 | |
|         // Swap buffers | |
|         glfwSwapBuffers(); | |
| 
 | |
|     } // Check if the ESC key was pressed or the window was closed | |
|     while( glfwGetKey( GLFW_KEY_ESC ) != GLFW_PRESS && | |
|            glfwGetWindowParam( GLFW_OPENED ) ); | |
| 
 | |
|     // Close OpenGL window and terminate GLFW | |
|     glfwTerminate(); | |
| 
 | |
|     exit( EXIT_SUCCESS ); | |
| } | |
| 
 | |
| 
 |