小编Com*_*che的帖子

Android流畅的游戏循环


我在OpenGL中平滑滚动有问题(在SGS2和ACE上测试)
我创建了简单的应用程序 - 只有固定速度的水平滚动图像,或者只有一个图像(播放器)通过加速器移动,但它的运动不顺畅:-(
我试过了许多代码但不满意......

首先我尝试使用GLSurfaceView.RENDERMODE_CONTINUOUSLY并将所有代码放到onDrawFrame:

    public void onDrawFrame(GL10 gl) 
    {
      updateGame(gl, 0.017f);
      drawGame(gl); 
    }
Run Code Online (Sandbox Code Playgroud)

这是最简单,最绝对的顺畅! - 但它取决于硬件速度(=无用)


    public void onDrawFrame(GL10 gl) 
    { 
      frameTime = SystemClock.elapsedRealtime();        
      elapsedTime = (frameTime - lastTime) / 1000; 
      updateGame(gl, elapsedTime);
      drawGame(gl); 
      lastTime = frameTime; 
    }
Run Code Online (Sandbox Code Playgroud)

这是最好的,但它不像以前那样流畅,有时轻弹


我试过GLSurfaceView.RENDERMODE_WHEN_DIRTY,在onDrawFrame我只有绘图对象和这个代码在单独的线程中:

   while (true) 
   {
     updateGame(renderer, 0.017f);
     mGLSurfaceView.requestRender();
     next_game_tick += SKIP_TICKS;
     sleep_time = next_game_tick - System.currentTimeMillis();
     if (sleep_time >= 0) 
     {
       try 
       {
          Thread.sleep(sleep_time);
       } 
       catch (Exception e) {}
       }
       else 
       {
         Log.d("running behind: ", String.valueOf(sleep_time)); …
Run Code Online (Sandbox Code Playgroud)

java android opengl-es opengl-es-2.0

19
推荐指数
1
解决办法
1万
查看次数

标签 统计

android ×1

java ×1

opengl-es ×1

opengl-es-2.0 ×1