Помогите с мерцанием при перезагрузке сцены openGL - PullRequest
1 голос
/ 12 июля 2011

Я начинаю чувствовать себя плохо из-за того, что задаю так много вопросов и не могу отвечать ни на кого, но как только я найду те, которые смогу, я это сделаю!Исповедь с пути ...

По большому счету у меня есть gameLoop, который запускает все в игре, которую я делаю, и все отлично работает в меню и затем в игре, но когда я выхожу из игры изатем перезагрузите экран меню, экран мерцает.

Вот мой игровой цикл, я надеюсь, что он даст некоторое представление.

//A game loop that is triggered by a timer with intervals of 1/60 seconds
- (void)gameLoop
{
    // we use our own autorelease pool so that we can control when garbage gets collected
    NSAutoreleasePool * apool = [[NSAutoreleasePool alloc] init];

    thisFrameStartTime = [levelStartDate timeIntervalSinceNow];
    deltaTime =  lastFrameStartTime - thisFrameStartTime;
    lastFrameStartTime = thisFrameStartTime;

    // add any queued scene objects
    if ([objectsToAdd count] > 0) 
    {
        [sceneObjects addObjectsFromArray:objectsToAdd];
        [objectsToAdd removeAllObjects];
    }


    // update our model
    [self updateModel];

    // send our objects to the renderer
    [self renderScene];

    // remove any objects that need removal
    if ([objectsToRemove count] > 0) 
    {
        [sceneObjects removeObjectsInArray:objectsToRemove];
        [objectsToRemove removeAllObjects];
    }

    [apool release];

    if (needToLoadScene) 
    {
        [sceneObjects removeAllObjects];
        [self loadScene];           
    }
    if (needToEndScene)
    {
        [sceneObjects removeAllObjects];
        [self stopAnimation];
        //We'll need to add unloading sounds later on
        [inputController endScene];
        [self renderScene];
        needToEndScene = NO;
    }
}

Единственное, что я должен добавить, это то, что видконтролируется классом MusicAndViewController, который я использую в качестве представления, а затем добавляю последующие представления.Меню и игровые представления на самом деле являются одним и тем же представлением openGL, но я отображаю чистое представление перед переключением на другое представление

1 Ответ

0 голосов
/ 13 июля 2011

Любой, у кого есть проблема, похожая на ту, которая у меня была, и которая решила ее для меня, это:

При настройке таймера я должен был переопределить установщик так, чтобы он стал недействительным, а затем установить таймер.На моей gameScene я этого не делал, поэтому, когда я делаю таймер = ноль, он продолжает срабатывать (так как он не был аннулирован до установки ноля и все еще работал), а затем вызывает мерцание на следующей загруженной сцене(меню)

...