mirror of
				https://github.com/glfw/glfw.git
				synced 2025-11-04 06:15:07 +00:00 
			
		
		
		
	Formatting.
This commit is contained in:
		
							parent
							
								
									a4a2eaaa0f
								
							
						
					
					
						commit
						cba8d35c65
					
				@ -50,48 +50,49 @@ static int do_redraw = 1;
 | 
			
		||||
#define TORUS_MAJOR_RES 32
 | 
			
		||||
#define TORUS_MINOR_RES 32
 | 
			
		||||
 | 
			
		||||
static void drawTorus( void )
 | 
			
		||||
static void drawTorus(void)
 | 
			
		||||
{
 | 
			
		||||
    static GLuint torus_list = 0;
 | 
			
		||||
    int    i, j, k;
 | 
			
		||||
    double s, t, x, y, z, nx, ny, nz, scale, twopi;
 | 
			
		||||
 | 
			
		||||
    if( !torus_list )
 | 
			
		||||
    if (!torus_list)
 | 
			
		||||
    {
 | 
			
		||||
        // Start recording displaylist
 | 
			
		||||
        torus_list = glGenLists( 1 );
 | 
			
		||||
        glNewList( torus_list, GL_COMPILE_AND_EXECUTE );
 | 
			
		||||
        torus_list = glGenLists(1);
 | 
			
		||||
        glNewList(torus_list, GL_COMPILE_AND_EXECUTE);
 | 
			
		||||
 | 
			
		||||
        // Draw torus
 | 
			
		||||
        twopi = 2.0 * M_PI;
 | 
			
		||||
        for( i = 0; i < TORUS_MINOR_RES; i++ )
 | 
			
		||||
        for (i = 0;  i < TORUS_MINOR_RES;  i++)
 | 
			
		||||
        {
 | 
			
		||||
            glBegin( GL_QUAD_STRIP );
 | 
			
		||||
            for( j = 0; j <= TORUS_MAJOR_RES; j++ )
 | 
			
		||||
            glBegin(GL_QUAD_STRIP);
 | 
			
		||||
            for (j = 0;  j <= TORUS_MAJOR_RES;  j++)
 | 
			
		||||
            {
 | 
			
		||||
                for( k = 1; k >= 0; k-- )
 | 
			
		||||
                for (k = 1;  k >= 0;  k--)
 | 
			
		||||
                {
 | 
			
		||||
                    s = (i + k) % TORUS_MINOR_RES + 0.5;
 | 
			
		||||
                    t = j % TORUS_MAJOR_RES;
 | 
			
		||||
 | 
			
		||||
                    // Calculate point on surface
 | 
			
		||||
                    x = (TORUS_MAJOR+TORUS_MINOR*cos(s*twopi/TORUS_MINOR_RES))*cos(t*twopi/TORUS_MAJOR_RES);
 | 
			
		||||
                    x = (TORUS_MAJOR + TORUS_MINOR * cos(s * twopi / TORUS_MINOR_RES)) * cos(t * twopi / TORUS_MAJOR_RES);
 | 
			
		||||
                    y = TORUS_MINOR * sin(s * twopi / TORUS_MINOR_RES);
 | 
			
		||||
                    z = (TORUS_MAJOR+TORUS_MINOR*cos(s*twopi/TORUS_MINOR_RES))*sin(t*twopi/TORUS_MAJOR_RES);
 | 
			
		||||
                    z = (TORUS_MAJOR + TORUS_MINOR * cos(s * twopi / TORUS_MINOR_RES)) * sin(t * twopi / TORUS_MAJOR_RES);
 | 
			
		||||
 | 
			
		||||
                    // Calculate surface normal
 | 
			
		||||
                    nx = x - TORUS_MAJOR*cos(t*twopi/TORUS_MAJOR_RES);
 | 
			
		||||
                    nx = x - TORUS_MAJOR * cos(t * twopi / TORUS_MAJOR_RES);
 | 
			
		||||
                    ny = y;
 | 
			
		||||
                    nz = z - TORUS_MAJOR*sin(t*twopi/TORUS_MAJOR_RES);
 | 
			
		||||
                    scale = 1.0 / sqrt( nx*nx + ny*ny + nz*nz );
 | 
			
		||||
                    nz = z - TORUS_MAJOR * sin(t * twopi / TORUS_MAJOR_RES);
 | 
			
		||||
                    scale = 1.0 / sqrt(nx*nx + ny*ny + nz*nz);
 | 
			
		||||
                    nx *= scale;
 | 
			
		||||
                    ny *= scale;
 | 
			
		||||
                    nz *= scale;
 | 
			
		||||
 | 
			
		||||
                    glNormal3f( (float)nx, (float)ny, (float)nz );
 | 
			
		||||
                    glVertex3f( (float)x, (float)y, (float)z );
 | 
			
		||||
                    glNormal3f((float) nx, (float) ny, (float) nz);
 | 
			
		||||
                    glVertex3f((float) x, (float) y, (float) z);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            glEnd();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -101,7 +102,7 @@ static void drawTorus( void )
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        // Playback displaylist
 | 
			
		||||
        glCallList( torus_list );
 | 
			
		||||
        glCallList(torus_list);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -110,7 +111,7 @@ static void drawTorus( void )
 | 
			
		||||
// Draw the scene (a rotating torus)
 | 
			
		||||
//========================================================================
 | 
			
		||||
 | 
			
		||||
static void drawScene( void )
 | 
			
		||||
static void drawScene(void)
 | 
			
		||||
{
 | 
			
		||||
    const GLfloat model_diffuse[4]  = {1.0f, 0.8f, 0.8f, 1.0f};
 | 
			
		||||
    const GLfloat model_specular[4] = {0.6f, 0.6f, 0.6f, 1.0f};
 | 
			
		||||
@ -119,17 +120,17 @@ static void drawScene( void )
 | 
			
		||||
    glPushMatrix();
 | 
			
		||||
 | 
			
		||||
    // Rotate the object
 | 
			
		||||
    glRotatef( (GLfloat)rot_x*0.5f, 1.0f, 0.0f, 0.0f );
 | 
			
		||||
    glRotatef( (GLfloat)rot_y*0.5f, 0.0f, 1.0f, 0.0f );
 | 
			
		||||
    glRotatef( (GLfloat)rot_z*0.5f, 0.0f, 0.0f, 1.0f );
 | 
			
		||||
    glRotatef((GLfloat) rot_x * 0.5f, 1.0f, 0.0f, 0.0f);
 | 
			
		||||
    glRotatef((GLfloat) rot_y * 0.5f, 0.0f, 1.0f, 0.0f);
 | 
			
		||||
    glRotatef((GLfloat) rot_z * 0.5f, 0.0f, 0.0f, 1.0f);
 | 
			
		||||
 | 
			
		||||
    // Set model color (used for orthogonal views, lighting disabled)
 | 
			
		||||
    glColor4fv( model_diffuse );
 | 
			
		||||
    glColor4fv(model_diffuse);
 | 
			
		||||
 | 
			
		||||
    // Set model material (used for perspective view, lighting enabled)
 | 
			
		||||
    glMaterialfv( GL_FRONT, GL_DIFFUSE, model_diffuse );
 | 
			
		||||
    glMaterialfv( GL_FRONT, GL_SPECULAR, model_specular );
 | 
			
		||||
    glMaterialf(  GL_FRONT, GL_SHININESS, model_shininess );
 | 
			
		||||
    glMaterialfv(GL_FRONT, GL_DIFFUSE, model_diffuse);
 | 
			
		||||
    glMaterialfv(GL_FRONT, GL_SPECULAR, model_specular);
 | 
			
		||||
    glMaterialf(GL_FRONT, GL_SHININESS, model_shininess);
 | 
			
		||||
 | 
			
		||||
    // Draw torus
 | 
			
		||||
    drawTorus();
 | 
			
		||||
@ -142,55 +143,55 @@ static void drawScene( void )
 | 
			
		||||
// Draw a 2D grid (used for orthogonal views)
 | 
			
		||||
//========================================================================
 | 
			
		||||
 | 
			
		||||
static void drawGrid( float scale, int steps )
 | 
			
		||||
static void drawGrid(float scale, int steps)
 | 
			
		||||
{
 | 
			
		||||
    int   i;
 | 
			
		||||
    int i;
 | 
			
		||||
    float x, y;
 | 
			
		||||
 | 
			
		||||
    glPushMatrix();
 | 
			
		||||
 | 
			
		||||
    // Set background to some dark bluish grey
 | 
			
		||||
    glClearColor( 0.05f, 0.05f, 0.2f, 0.0f);
 | 
			
		||||
    glClear( GL_COLOR_BUFFER_BIT );
 | 
			
		||||
    glClearColor(0.05f, 0.05f, 0.2f, 0.0f);
 | 
			
		||||
    glClear(GL_COLOR_BUFFER_BIT);
 | 
			
		||||
 | 
			
		||||
    // Setup modelview matrix (flat XY view)
 | 
			
		||||
    glLoadIdentity();
 | 
			
		||||
    gluLookAt( 0.0, 0.0, 1.0,
 | 
			
		||||
               0.0, 0.0, 0.0,
 | 
			
		||||
               0.0, 1.0, 0.0 );
 | 
			
		||||
    gluLookAt(0.0, 0.0, 1.0,
 | 
			
		||||
              0.0, 0.0, 0.0,
 | 
			
		||||
              0.0, 1.0, 0.0);
 | 
			
		||||
 | 
			
		||||
    // We don't want to update the Z-buffer
 | 
			
		||||
    glDepthMask( GL_FALSE );
 | 
			
		||||
    glDepthMask(GL_FALSE);
 | 
			
		||||
 | 
			
		||||
    // Set grid color
 | 
			
		||||
    glColor3f( 0.0f, 0.5f, 0.5f );
 | 
			
		||||
    glColor3f(0.0f, 0.5f, 0.5f);
 | 
			
		||||
 | 
			
		||||
    glBegin( GL_LINES );
 | 
			
		||||
    glBegin(GL_LINES);
 | 
			
		||||
 | 
			
		||||
    // Horizontal lines
 | 
			
		||||
    x = scale * 0.5f * (float)(steps-1);
 | 
			
		||||
    y = -scale * 0.5f * (float)(steps-1);
 | 
			
		||||
    for( i = 0; i < steps; i ++ )
 | 
			
		||||
    x = scale * 0.5f * (float) (steps - 1);
 | 
			
		||||
    y = -scale * 0.5f * (float) (steps - 1);
 | 
			
		||||
    for (i = 0;  i < steps;  i++)
 | 
			
		||||
    {
 | 
			
		||||
        glVertex3f( -x, y, 0.0f );
 | 
			
		||||
        glVertex3f( x, y, 0.0f );
 | 
			
		||||
        glVertex3f(-x, y, 0.0f);
 | 
			
		||||
        glVertex3f(x, y, 0.0f);
 | 
			
		||||
        y += scale;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Vertical lines
 | 
			
		||||
    x = -scale * 0.5f * (float)(steps-1);
 | 
			
		||||
    y = scale * 0.5f * (float)(steps-1);
 | 
			
		||||
    for( i = 0; i < steps; i ++ )
 | 
			
		||||
    x = -scale * 0.5f * (float) (steps - 1);
 | 
			
		||||
    y = scale * 0.5f * (float) (steps - 1);
 | 
			
		||||
    for (i = 0;  i < steps;  i++)
 | 
			
		||||
    {
 | 
			
		||||
        glVertex3f( x, -y, 0.0f );
 | 
			
		||||
        glVertex3f( x, y, 0.0f );
 | 
			
		||||
        glVertex3f(x, -y, 0.0f);
 | 
			
		||||
        glVertex3f(x, y, 0.0f);
 | 
			
		||||
        x += scale;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    glEnd();
 | 
			
		||||
 | 
			
		||||
    // Enable Z-buffer writing again
 | 
			
		||||
    glDepthMask( GL_TRUE );
 | 
			
		||||
    glDepthMask(GL_TRUE);
 | 
			
		||||
 | 
			
		||||
    glPopMatrix();
 | 
			
		||||
}
 | 
			
		||||
@ -200,7 +201,7 @@ static void drawGrid( float scale, int steps )
 | 
			
		||||
// Draw all views
 | 
			
		||||
//========================================================================
 | 
			
		||||
 | 
			
		||||
static void drawAllViews( void )
 | 
			
		||||
static void drawAllViews(void)
 | 
			
		||||
{
 | 
			
		||||
    const GLfloat light_position[4] = {0.0f, 8.0f, 8.0f, 1.0f};
 | 
			
		||||
    const GLfloat light_diffuse[4]  = {1.0f, 1.0f, 1.0f, 1.0f};
 | 
			
		||||
@ -209,145 +210,142 @@ static void drawAllViews( void )
 | 
			
		||||
    double aspect;
 | 
			
		||||
 | 
			
		||||
    // Calculate aspect of window
 | 
			
		||||
    if( height > 0 )
 | 
			
		||||
    {
 | 
			
		||||
        aspect = (double)width / (double)height;
 | 
			
		||||
    }
 | 
			
		||||
    if (height > 0)
 | 
			
		||||
        aspect = (double) width / (double) height;
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        aspect = 1.0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Clear screen
 | 
			
		||||
    glClearColor( 0.0f, 0.0f, 0.0f, 0.0f);
 | 
			
		||||
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
 | 
			
		||||
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
 | 
			
		||||
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 | 
			
		||||
 | 
			
		||||
    // Enable scissor test
 | 
			
		||||
    glEnable( GL_SCISSOR_TEST );
 | 
			
		||||
    glEnable(GL_SCISSOR_TEST);
 | 
			
		||||
 | 
			
		||||
    // Enable depth test
 | 
			
		||||
    glEnable( GL_DEPTH_TEST );
 | 
			
		||||
    glDepthFunc( GL_LEQUAL );
 | 
			
		||||
 | 
			
		||||
    glEnable(GL_DEPTH_TEST);
 | 
			
		||||
    glDepthFunc(GL_LEQUAL);
 | 
			
		||||
 | 
			
		||||
    // ** ORTHOGONAL VIEWS **
 | 
			
		||||
 | 
			
		||||
    // For orthogonal views, use wireframe rendering
 | 
			
		||||
    glPolygonMode( GL_FRONT_AND_BACK, GL_LINE );
 | 
			
		||||
    glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
 | 
			
		||||
 | 
			
		||||
    // Enable line anti-aliasing
 | 
			
		||||
    glEnable( GL_LINE_SMOOTH );
 | 
			
		||||
    glEnable( GL_BLEND );
 | 
			
		||||
    glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
 | 
			
		||||
    glEnable(GL_LINE_SMOOTH);
 | 
			
		||||
    glEnable(GL_BLEND);
 | 
			
		||||
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 | 
			
		||||
 | 
			
		||||
    // Setup orthogonal projection matrix
 | 
			
		||||
    glMatrixMode( GL_PROJECTION );
 | 
			
		||||
    glMatrixMode(GL_PROJECTION);
 | 
			
		||||
    glLoadIdentity();
 | 
			
		||||
    glOrtho( -3.0*aspect, 3.0*aspect, -3.0, 3.0, 1.0, 50.0 );
 | 
			
		||||
    glOrtho(-3.0 * aspect, 3.0 * aspect, -3.0, 3.0, 1.0, 50.0);
 | 
			
		||||
 | 
			
		||||
    // Upper left view (TOP VIEW)
 | 
			
		||||
    glViewport( 0, height/2, width/2, height/2 );
 | 
			
		||||
    glScissor( 0, height/2, width/2, height/2 );
 | 
			
		||||
    glMatrixMode( GL_MODELVIEW );
 | 
			
		||||
    glViewport(0, height / 2, width / 2, height / 2);
 | 
			
		||||
    glScissor(0, height / 2, width / 2, height / 2);
 | 
			
		||||
    glMatrixMode(GL_MODELVIEW);
 | 
			
		||||
    glLoadIdentity();
 | 
			
		||||
    gluLookAt( 0.0f, 10.0f, 1e-3f,   // Eye-position (above)
 | 
			
		||||
               0.0f, 0.0f, 0.0f,     // View-point
 | 
			
		||||
               0.0f, 1.0f, 0.0f );   // Up-vector
 | 
			
		||||
    drawGrid( 0.5, 12 );
 | 
			
		||||
    gluLookAt(0.0f, 10.0f, 1e-3f,   // Eye-position (above)
 | 
			
		||||
              0.0f, 0.0f, 0.0f,     // View-point
 | 
			
		||||
              0.0f, 1.0f, 0.0f);   // Up-vector
 | 
			
		||||
    drawGrid(0.5, 12);
 | 
			
		||||
    drawScene();
 | 
			
		||||
 | 
			
		||||
    // Lower left view (FRONT VIEW)
 | 
			
		||||
    glViewport( 0, 0, width/2, height/2 );
 | 
			
		||||
    glScissor( 0, 0, width/2, height/2 );
 | 
			
		||||
    glMatrixMode( GL_MODELVIEW );
 | 
			
		||||
    glViewport(0, 0, width / 2, height / 2);
 | 
			
		||||
    glScissor(0, 0, width / 2, height / 2);
 | 
			
		||||
    glMatrixMode(GL_MODELVIEW);
 | 
			
		||||
    glLoadIdentity();
 | 
			
		||||
    gluLookAt( 0.0f, 0.0f, 10.0f,    // Eye-position (in front of)
 | 
			
		||||
               0.0f, 0.0f, 0.0f,     // View-point
 | 
			
		||||
               0.0f, 1.0f, 0.0f );   // Up-vector
 | 
			
		||||
    drawGrid( 0.5, 12 );
 | 
			
		||||
    gluLookAt(0.0f, 0.0f, 10.0f,    // Eye-position (in front of)
 | 
			
		||||
              0.0f, 0.0f, 0.0f,     // View-point
 | 
			
		||||
              0.0f, 1.0f, 0.0f);   // Up-vector
 | 
			
		||||
    drawGrid(0.5, 12);
 | 
			
		||||
    drawScene();
 | 
			
		||||
 | 
			
		||||
    // Lower right view (SIDE VIEW)
 | 
			
		||||
    glViewport( width/2, 0, width/2, height/2 );
 | 
			
		||||
    glScissor( width/2, 0, width/2, height/2 );
 | 
			
		||||
    glMatrixMode( GL_MODELVIEW );
 | 
			
		||||
    glViewport(width / 2, 0, width / 2, height / 2);
 | 
			
		||||
    glScissor(width / 2, 0, width / 2, height / 2);
 | 
			
		||||
    glMatrixMode(GL_MODELVIEW);
 | 
			
		||||
    glLoadIdentity();
 | 
			
		||||
    gluLookAt( 10.0f, 0.0f, 0.0f,    // Eye-position (to the right)
 | 
			
		||||
               0.0f, 0.0f, 0.0f,     // View-point
 | 
			
		||||
               0.0f, 1.0f, 0.0f );   // Up-vector
 | 
			
		||||
    drawGrid( 0.5, 12 );
 | 
			
		||||
    gluLookAt(10.0f, 0.0f, 0.0f,    // Eye-position (to the right)
 | 
			
		||||
              0.0f, 0.0f, 0.0f,     // View-point
 | 
			
		||||
              0.0f, 1.0f, 0.0f);   // Up-vector
 | 
			
		||||
    drawGrid(0.5, 12);
 | 
			
		||||
    drawScene();
 | 
			
		||||
 | 
			
		||||
    // Disable line anti-aliasing
 | 
			
		||||
    glDisable( GL_LINE_SMOOTH );
 | 
			
		||||
    glDisable( GL_BLEND );
 | 
			
		||||
 | 
			
		||||
    glDisable(GL_LINE_SMOOTH);
 | 
			
		||||
    glDisable(GL_BLEND);
 | 
			
		||||
 | 
			
		||||
    // ** PERSPECTIVE VIEW **
 | 
			
		||||
 | 
			
		||||
    // For perspective view, use solid rendering
 | 
			
		||||
    glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
 | 
			
		||||
    glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
 | 
			
		||||
 | 
			
		||||
    // Enable face culling (faster rendering)
 | 
			
		||||
    glEnable( GL_CULL_FACE );
 | 
			
		||||
    glCullFace( GL_BACK );
 | 
			
		||||
    glFrontFace( GL_CW );
 | 
			
		||||
    glEnable(GL_CULL_FACE);
 | 
			
		||||
    glCullFace(GL_BACK);
 | 
			
		||||
    glFrontFace(GL_CW);
 | 
			
		||||
 | 
			
		||||
    // Setup perspective projection matrix
 | 
			
		||||
    glMatrixMode( GL_PROJECTION );
 | 
			
		||||
    glMatrixMode(GL_PROJECTION);
 | 
			
		||||
    glLoadIdentity();
 | 
			
		||||
    gluPerspective( 65.0f, aspect, 1.0f, 50.0f );
 | 
			
		||||
    gluPerspective(65.0f, aspect, 1.0f, 50.0f);
 | 
			
		||||
 | 
			
		||||
    // Upper right view (PERSPECTIVE VIEW)
 | 
			
		||||
    glViewport( width/2, height/2, width/2, height/2 );
 | 
			
		||||
    glScissor( width/2, height/2, width/2, height/2 );
 | 
			
		||||
    glMatrixMode( GL_MODELVIEW );
 | 
			
		||||
    glViewport(width / 2, height / 2, width / 2, height / 2);
 | 
			
		||||
    glScissor(width / 2, height / 2, width / 2, height / 2);
 | 
			
		||||
    glMatrixMode(GL_MODELVIEW);
 | 
			
		||||
    glLoadIdentity();
 | 
			
		||||
    gluLookAt( 3.0f, 1.5f, 3.0f,     // Eye-position
 | 
			
		||||
               0.0f, 0.0f, 0.0f,     // View-point
 | 
			
		||||
               0.0f, 1.0f, 0.0f );   // Up-vector
 | 
			
		||||
    gluLookAt(3.0f, 1.5f, 3.0f,     // Eye-position
 | 
			
		||||
              0.0f, 0.0f, 0.0f,     // View-point
 | 
			
		||||
              0.0f, 1.0f, 0.0f);   // Up-vector
 | 
			
		||||
 | 
			
		||||
    // Configure and enable light source 1
 | 
			
		||||
    glLightfv( GL_LIGHT1, GL_POSITION, light_position );
 | 
			
		||||
    glLightfv( GL_LIGHT1, GL_AMBIENT, light_ambient );
 | 
			
		||||
    glLightfv( GL_LIGHT1, GL_DIFFUSE, light_diffuse );
 | 
			
		||||
    glLightfv( GL_LIGHT1, GL_SPECULAR, light_specular );
 | 
			
		||||
    glEnable( GL_LIGHT1 );
 | 
			
		||||
    glEnable( GL_LIGHTING );
 | 
			
		||||
    glLightfv(GL_LIGHT1, GL_POSITION, light_position);
 | 
			
		||||
    glLightfv(GL_LIGHT1, GL_AMBIENT, light_ambient);
 | 
			
		||||
    glLightfv(GL_LIGHT1, GL_DIFFUSE, light_diffuse);
 | 
			
		||||
    glLightfv(GL_LIGHT1, GL_SPECULAR, light_specular);
 | 
			
		||||
    glEnable(GL_LIGHT1);
 | 
			
		||||
    glEnable(GL_LIGHTING);
 | 
			
		||||
 | 
			
		||||
    // Draw scene
 | 
			
		||||
    drawScene();
 | 
			
		||||
 | 
			
		||||
    // Disable lighting
 | 
			
		||||
    glDisable( GL_LIGHTING );
 | 
			
		||||
    glDisable(GL_LIGHTING);
 | 
			
		||||
 | 
			
		||||
    // Disable face culling
 | 
			
		||||
    glDisable( GL_CULL_FACE );
 | 
			
		||||
    glDisable(GL_CULL_FACE);
 | 
			
		||||
 | 
			
		||||
    // Disable depth test
 | 
			
		||||
    glDisable( GL_DEPTH_TEST );
 | 
			
		||||
    glDisable(GL_DEPTH_TEST);
 | 
			
		||||
 | 
			
		||||
    // Disable scissor test
 | 
			
		||||
    glDisable( GL_SCISSOR_TEST );
 | 
			
		||||
 | 
			
		||||
    glDisable(GL_SCISSOR_TEST);
 | 
			
		||||
 | 
			
		||||
    // Draw a border around the active view
 | 
			
		||||
    if( active_view > 0 && active_view != 2 )
 | 
			
		||||
    if (active_view > 0 && active_view != 2)
 | 
			
		||||
    {
 | 
			
		||||
        glViewport( 0, 0, width, height );
 | 
			
		||||
        glMatrixMode( GL_PROJECTION );
 | 
			
		||||
        glViewport(0, 0, width, height);
 | 
			
		||||
 | 
			
		||||
        glMatrixMode(GL_PROJECTION);
 | 
			
		||||
        glLoadIdentity();
 | 
			
		||||
        glOrtho( 0.0, 2.0, 0.0, 2.0, 0.0, 1.0 );
 | 
			
		||||
        glMatrixMode( GL_MODELVIEW );
 | 
			
		||||
        glOrtho(0.0, 2.0, 0.0, 2.0, 0.0, 1.0);
 | 
			
		||||
 | 
			
		||||
        glMatrixMode(GL_MODELVIEW);
 | 
			
		||||
        glLoadIdentity();
 | 
			
		||||
        glColor3f( 1.0f, 1.0f, 0.6f );
 | 
			
		||||
        glTranslatef( (GLfloat) ((active_view - 1) & 1), (GLfloat) (1 - (active_view - 1) / 2), 0.0f );
 | 
			
		||||
        glBegin( GL_LINE_STRIP );
 | 
			
		||||
          glVertex2i( 0, 0 );
 | 
			
		||||
          glVertex2i( 1, 0 );
 | 
			
		||||
          glVertex2i( 1, 1 );
 | 
			
		||||
          glVertex2i( 0, 1 );
 | 
			
		||||
          glVertex2i( 0, 0 );
 | 
			
		||||
        glTranslatef((GLfloat) ((active_view - 1) & 1), (GLfloat) (1 - (active_view - 1) / 2), 0.0f);
 | 
			
		||||
 | 
			
		||||
        glColor3f(1.0f, 1.0f, 0.6f);
 | 
			
		||||
 | 
			
		||||
        glBegin(GL_LINE_STRIP);
 | 
			
		||||
        glVertex2i(0, 0);
 | 
			
		||||
        glVertex2i(1, 0);
 | 
			
		||||
        glVertex2i(1, 1);
 | 
			
		||||
        glVertex2i(0, 1);
 | 
			
		||||
        glVertex2i(0, 0);
 | 
			
		||||
        glEnd();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -357,7 +355,7 @@ static void drawAllViews( void )
 | 
			
		||||
// Window size callback function
 | 
			
		||||
//========================================================================
 | 
			
		||||
 | 
			
		||||
static void windowSizeFun( GLFWwindow window, int w, int h )
 | 
			
		||||
static void windowSizeFun(GLFWwindow window, int w, int h)
 | 
			
		||||
{
 | 
			
		||||
    width  = w;
 | 
			
		||||
    height = h > 0 ? h : 1;
 | 
			
		||||
@ -369,7 +367,7 @@ static void windowSizeFun( GLFWwindow window, int w, int h )
 | 
			
		||||
// Window refresh callback function
 | 
			
		||||
//========================================================================
 | 
			
		||||
 | 
			
		||||
static void windowRefreshFun( GLFWwindow window )
 | 
			
		||||
static void windowRefreshFun(GLFWwindow window)
 | 
			
		||||
{
 | 
			
		||||
    do_redraw = 1;
 | 
			
		||||
}
 | 
			
		||||
@ -379,10 +377,10 @@ static void windowRefreshFun( GLFWwindow window )
 | 
			
		||||
// Mouse position callback function
 | 
			
		||||
//========================================================================
 | 
			
		||||
 | 
			
		||||
static void mousePosFun( GLFWwindow window, int x, int y )
 | 
			
		||||
static void mousePosFun(GLFWwindow window, int x, int y)
 | 
			
		||||
{
 | 
			
		||||
    // Depending on which view was selected, rotate around different axes
 | 
			
		||||
    switch( active_view )
 | 
			
		||||
    switch (active_view)
 | 
			
		||||
    {
 | 
			
		||||
        case 1:
 | 
			
		||||
            rot_x += y - ypos;
 | 
			
		||||
@ -414,25 +412,18 @@ static void mousePosFun( GLFWwindow window, int x, int y )
 | 
			
		||||
// Mouse button callback function
 | 
			
		||||
//========================================================================
 | 
			
		||||
 | 
			
		||||
static void mouseButtonFun( GLFWwindow window, int button, int action )
 | 
			
		||||
static void mouseButtonFun(GLFWwindow window, int button, int action)
 | 
			
		||||
{
 | 
			
		||||
    // Button clicked?
 | 
			
		||||
    if( ( button == GLFW_MOUSE_BUTTON_LEFT ) && action == GLFW_PRESS )
 | 
			
		||||
    if ((button == GLFW_MOUSE_BUTTON_LEFT) && action == GLFW_PRESS)
 | 
			
		||||
    {
 | 
			
		||||
        // Detect which of the four views was clicked
 | 
			
		||||
        active_view = 1;
 | 
			
		||||
        if( xpos >= width/2 )
 | 
			
		||||
        {
 | 
			
		||||
        if (xpos >= width / 2)
 | 
			
		||||
            active_view += 1;
 | 
			
		||||
        }
 | 
			
		||||
        if( ypos >= height/2 )
 | 
			
		||||
        {
 | 
			
		||||
        if (ypos >= height / 2)
 | 
			
		||||
            active_view += 2;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Button released?
 | 
			
		||||
    else if( button == GLFW_MOUSE_BUTTON_LEFT )
 | 
			
		||||
    else if (button == GLFW_MOUSE_BUTTON_LEFT)
 | 
			
		||||
    {
 | 
			
		||||
        // Deselect any previously selected view
 | 
			
		||||
        active_view = 0;
 | 
			
		||||
@ -443,51 +434,50 @@ static void mouseButtonFun( GLFWwindow window, int button, int action )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//========================================================================
 | 
			
		||||
// main()
 | 
			
		||||
// main
 | 
			
		||||
//========================================================================
 | 
			
		||||
 | 
			
		||||
int main( void )
 | 
			
		||||
int main(void)
 | 
			
		||||
{
 | 
			
		||||
    GLFWwindow window;
 | 
			
		||||
 | 
			
		||||
    // Initialise GLFW
 | 
			
		||||
    if( !glfwInit() )
 | 
			
		||||
    if (!glfwInit())
 | 
			
		||||
    {
 | 
			
		||||
        fprintf( stderr, "Failed to initialize GLFW\n" );
 | 
			
		||||
        exit( EXIT_FAILURE );
 | 
			
		||||
        fprintf(stderr, "Failed to initialize GLFW\n");
 | 
			
		||||
        exit(EXIT_FAILURE);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    glfwOpenWindowHint(GLFW_DEPTH_BITS, 16);
 | 
			
		||||
 | 
			
		||||
    // Open OpenGL window
 | 
			
		||||
    window = glfwOpenWindow( 500, 500, GLFW_WINDOWED, "Split view demo", NULL );
 | 
			
		||||
    window = glfwOpenWindow(500, 500, GLFW_WINDOWED, "Split view demo", NULL);
 | 
			
		||||
    if (!window)
 | 
			
		||||
    {
 | 
			
		||||
        fprintf( stderr, "Failed to open GLFW window\n" );
 | 
			
		||||
        glfwTerminate();
 | 
			
		||||
        exit( EXIT_FAILURE );
 | 
			
		||||
        fprintf(stderr, "Failed to open GLFW window\n");
 | 
			
		||||
        exit(EXIT_FAILURE);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Enable vsync
 | 
			
		||||
    glfwSwapInterval( 1 );
 | 
			
		||||
    glfwSwapInterval(1);
 | 
			
		||||
 | 
			
		||||
    // Enable sticky keys
 | 
			
		||||
    glfwEnable( window, GLFW_STICKY_KEYS );
 | 
			
		||||
    glfwEnable(window, GLFW_STICKY_KEYS);
 | 
			
		||||
 | 
			
		||||
    // Enable mouse cursor (only needed for fullscreen mode)
 | 
			
		||||
    glfwEnable( window, GLFW_MOUSE_CURSOR );
 | 
			
		||||
    glfwEnable(window, GLFW_MOUSE_CURSOR);
 | 
			
		||||
 | 
			
		||||
    // Set callback functions
 | 
			
		||||
    glfwSetWindowSizeCallback( window, windowSizeFun );
 | 
			
		||||
    glfwSetWindowRefreshCallback( window, windowRefreshFun );
 | 
			
		||||
    glfwSetMousePosCallback( window, mousePosFun );
 | 
			
		||||
    glfwSetMouseButtonCallback( window, mouseButtonFun );
 | 
			
		||||
    glfwSetWindowSizeCallback(window, windowSizeFun);
 | 
			
		||||
    glfwSetWindowRefreshCallback(window, windowRefreshFun);
 | 
			
		||||
    glfwSetMousePosCallback(window, mousePosFun);
 | 
			
		||||
    glfwSetMouseButtonCallback(window, mouseButtonFun);
 | 
			
		||||
 | 
			
		||||
    // Main loop
 | 
			
		||||
    do
 | 
			
		||||
    {
 | 
			
		||||
        // Only redraw if we need to
 | 
			
		||||
        if( do_redraw )
 | 
			
		||||
        if (do_redraw)
 | 
			
		||||
        {
 | 
			
		||||
            // Draw all views
 | 
			
		||||
            drawAllViews();
 | 
			
		||||
@ -502,12 +492,12 @@ int main( void )
 | 
			
		||||
        glfwWaitEvents();
 | 
			
		||||
 | 
			
		||||
    } // Check if the ESC key was pressed or the window was closed
 | 
			
		||||
    while( glfwIsWindow(window) &&
 | 
			
		||||
           glfwGetKey(window, GLFW_KEY_ESC) != GLFW_PRESS );
 | 
			
		||||
    while (glfwIsWindow(window) &&
 | 
			
		||||
           glfwGetKey(window, GLFW_KEY_ESC) != GLFW_PRESS);
 | 
			
		||||
 | 
			
		||||
    // Close OpenGL window and terminate GLFW
 | 
			
		||||
    glfwTerminate();
 | 
			
		||||
 | 
			
		||||
    exit( EXIT_SUCCESS );
 | 
			
		||||
    exit(EXIT_SUCCESS);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user