2013-05-05 45 views
1

我想在我的程序中將FPS打印到屏幕上。從getLastFPS返回的數字總是0.我看過和其他一些例子,我相信這是調用獲取fps的正確方法。我知道fps計數器是活躍的,因爲getTotalFPSFrames()返回一個增加的值。 getTotalFPSDuration()總是說0.Jogl動畫師總是說FPS是0

爲什麼它錯了,我該如何解決它?

public void display(GLAutoDrawable drawable) { 

    float time=drawable.getAnimator().getLastFPS(); 

    GL2 gl =drawable.getGL().getGL2(); 
    gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); 

    gl.glPushMatrix(); 
    gl.glMatrixMode(GL2.GL_PROJECTION); 
    gl.glPushMatrix(); 
    gl.glLoadIdentity(); 
    int[] viewport =new int[4]; 
    gl.glGetIntegerv (GL2.GL_VIEWPORT, viewport,0); 
    glu.gluOrtho2D (0,viewport[2], viewport[3], 0); 
    gl.glDepthFunc(GL2.GL_ALWAYS); 
    gl.glColor4f(1, 0, 0,1); 
    gl.glRasterPos2d(30,30); 
    glut.glutBitmapString(GLUT.BITMAP_HELVETICA_18, "FPS: "+time); 
    gl.glDepthFunc(GL2.GL_LESS); 
    gl.glPopMatrix(); 
    gl.glMatrixMode(GL2.GL_MODELVIEW); 
    gl.glPopMatrix(); 

    //other 3d rendering 
} 

回答

3

您需要設置FPS計數器更新的頻率。因此,例如,你的init()方法補充一點:

drawable.getAnimator().setUpdateFPSFrames(3, null); 

然後drawable.getAnimator().getLastFPS();將提供新的FPS數每3幀。