GLFW frame rate
CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 1 of 1

Thread: GLFW frame rate

  1. #1
    Join Date
    Jul 2008
    Posts
    5

    GLFW frame rate

    Hi All,

    I am actually working on a simulation to draw little cube.

    I would like to fix the frame rate of the display.

    I've got the idea of creating a timer which will call glswapbuffer every xx time but it seems not to work.

    Here is the code :

    Code:
    #include "main.h"
    
    
    
    //----------------------------------------------------------------------
    // openWindow() - Open a window to render.
    //----------------------------------------------------------------------
    
    int openWindow(void)
    {
    int ok = 0;
    
        ok = glfwOpenWindow(
            640, 480,          // Width and height of window
            8, 8, 8,           // Number of red, green, and blue bits for color buffer
            8,                 // Number of bits for alpha buffer
            24,                // Number of bits for depth buffer (Z-buffer)
            0,                 // Number of bits for stencil buffer
            GLFW_WINDOW        // We want a desktop window (could be GLFW_FULLSCREEN)
        );
        
    return ok;
    }
    
    
    
    
    //----------------------------------------------------------------------
    // initCamera() - Initialisation of view and camera system.
    //----------------------------------------------------------------------
    void initCamera(void)
    {
        int    width, height;  // Window dimensions
    
     // Get window size
        glfwGetWindowSize( &width, &height );
    
        // Make sure that height is non-zero to avoid division by zero
        height = height < 1 ? 1 : height;
    
        // Set viewport
        glViewport( 0, 0, width, height );
    
        // Clear color and depht buffers
        glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );
        glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
    
        // Set up projection matrix
        glMatrixMode( GL_PROJECTION );    // Select projection matrix
        glLoadIdentity();                 // Start with an identity matrix
        gluPerspective(                   // Set perspective view
            85.0,                         // Field of view = 65 degrees
            (double)width/(double)height, // Window aspect (assumes square pixels)
            1.0,                          // Near Z clipping plane
            100.0                         // Far Z clippling plane
        );
    
        // Set up modelview matrix
        glMatrixMode( GL_MODELVIEW );     // Select modelview matrix
        glLoadIdentity();                 // Start with an identity matrix
        gluLookAt(                        // Set camera position and orientation
            0.0, 0.0, 20.0,               // Camera position (x,y,z)
            0.0, 0.0, 0.0,                // View point (x,y,z)
            0.0, 1.0, 0.0                 // Up-vector (x,y,z)
        );
    
    }    
    
    
    
    
    
    
    //----------------------------------------------------------------------
    // draw() - Main OpenGL drawing function that is called each frame
    //----------------------------------------------------------------------
     
    
    void drawSim( void )
    {
    
        // ****Draw a Grille which is fading***
    
        
        // Now draw the quad
        
        if(colorR>=1.00)
        {
            down = 1;
            up = 0 ;
        }
        else if (colorR <= 0)
        {
            down = 0;
            up = 1 ;
        }
        
        if(up == 1)
            colorR += 0.001;  
        else if (down == 1)
            colorR -= 0.001;
        
        
        Burn.setGlobalLightness(colorR);
        Burn.draw();     
        
    }
    
    
    
    //----------------------------------------------------------------------
    // main() - Program entry point
    //----------------------------------------------------------------------
    int main( int argc, char **argv )
    {
        int    ok;             // Flag telling if the window was opened
        int    running;        // Flag telling if the program is running
    
        int    frames;
    	double fps, time, t0;
    	char   title[150];
    
    	frames = 0;
    	t0 = glfwGetTime();
    
    
        // Initialize GLFW
        glfwInit();
     
        // Open window
        ok = openWindow();
        
        // If we could not open a window, exit now
        if( !ok )
        {
            glfwTerminate();
            return 0;
        }
    
        // Set window title
        glfwSetWindowTitle( "cube 1.0" );
    
        // Enable sticky keys
        glfwEnable( GLFW_STICKY_KEYS );
        
        //Initialize camera
        initCamera();
    
    
        // Main rendering loop
        do
        {
                    //get the current time
            time = glfwGetTime();
    
    		// Calcul and display the FPS
            if((time-t0) > 1.0 || frames == 0)
            {
                fps = (double)frames / (time-t0);
                sprintf(title, "cube 1.0 (%.1f FPS)", fps);
                glfwSetWindowTitle(title);
                t0 = time;
                frames = 0;
            }
            frames ++;
            
        
    
        
            // Call our rendering function
            drawSim();
                    
            //Limit the frameRate to 60fps.
           glfwSwapInterval(1);
            
            
            // Swap front and back buffers (we use a double buffered display)
     
             glfwSwapBuffers();
    
            // Check if the escape key was pressed, or if the window was closed
            running = !glfwGetKey( GLFW_KEY_ESC ) &&
                      glfwGetWindowParam( GLFW_OPENED );
        }
        while( running );
    
        // Terminate GLFW
        glfwTerminate();
    
        // Exit program
        return 0;
    }
    I actually use glfwSwapInterval(1); so that it allows to get a fixed frame rate about 60fps. But i can not manage to do something else. Oh by the way, I would like to fixe the frame rate and in the same time do not stop the programm because I need to do other stuff before drawing my cube.

    Thank you all !

    I hope you will help

    (sorry for the bad english)
    Last edited by bigadel; February 6th, 2009 at 09:29 AM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  


Windows Mobile Development Center


Click Here to Expand Forum to Full Width

This is a CodeGuru survey question.


Featured


HTML5 Development Center