1

我是 iPhone 上 openGL 编程和多线程的新手,我正在尝试编写一个小型 openGL 游戏,但我面临一个小性能问题。

游戏将图形渲染为单独的 openGL 视图(我现在使用 ES 1.1),我的渲染引擎根据用户的方向更新图形(如指南针)。在经历了人们在网上的经历后,我决定:

  1. 在单独的线程上运行所有与 openGL 相关的操作(线程之间没有与 openGL 相关的操作)。
  2. 在主线程上从位置服务运行回调
  3. 使用委托在位置控制器和我的 openGLViews 之间传达航向更新。

    -(void)loadGame{
    
    //other loading operations
    
    [self loadThreads];
    
    [graphicsThread start];
    
    }
    
    -(void)loadThreads{
    
    //graphics thread is an ivar          
        graphicsThread = [[NSThread alloc] initWithTarget:self selector:@selector(loadGameViews) object:Nil];
    
        //load other thread related stuff
    
    }
    
    
    -(void)loadGameViews{
    
         //create and load all openGLViews
    
    
        }
    

编辑 :

 -(void)loadGameViews{

         //create and load all openGLViews
        [self.openGLView performSelector:@selector(startAnimation) onThread:graphicsThread withObject:NULL waitUntilDone:NO];

        }         

该代码工作正常,但我注意到帧速率(在 iPad 上测试)下降到 40 FPS(在单线程上运行时,iot 为 60)。我想知道:

  1. 如果 40 FPS 是游戏可接受的帧速率。
  2. 如果我的线程逻辑是正确的(或者有更好的方法吗?)
  3. 如果有办法将我的帧速率提高到 60 FPS
4

0 回答 0