Кокос, как сделать для CCRenderTexture из фонового потока - PullRequest
0 голосов
/ 04 июля 2011

У меня есть цикл рендеринга, который я хочу запустить в фоновом режиме, чтобы я мог контролировать скорость цикла воспроизведения, делая его анимацию медленной или быстрой. Прямо сейчас я использую sleep и вызываю begin и end на CCRenderTexture в главном потоке каждый раз, когда я хочу использовать спрайт:

[self performSelectorOnMainThread:@selector(visit) withObject:nil waitUntilDone:YES];

- (void)visit {
    [target begin];
    [[self.currentLine.brush sprite] visit];
    [target end];
}

Это был хак, который заставил его работать, но, конечно, заставляет его работать очень медленно. вызов начала и конца в фоновом потоке просто ничего не делает для визуализации

Я хочу иметь возможность вызвать начало, сделать все мои рисунки в фоновом потоке, а затем вызвать конец, но все, что я пробовал, либо ничего не сделало, либо заставило мой EAGLView перевернуться.

1 Ответ

1 голос
/ 05 июля 2011

CCRenderTexure работает, перенаправляя вывод opengl на себя, чтобы получаемый чертеж сохранялся на вашем спрайте.Это означает, что в одной операции вам нужно вызвать begin сделать все ваши рисунки, а затем вызвать end.

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

end необходимо вызвать, прежде чем возобновятся обычные операции рендеринга.

...