我有一个渲染循环,我想在后台运行,这样我就可以控制播放循环的速度,使其无论是慢速还是快速动画。现在我正在使用sleep并在每次我想使用sprite时调用主线程中的CCRenderTexture
开始和结束:
[self performSelectorOnMainThread:@selector(visit) withObject:nil waitUntilDone:YES];
- (void)visit {
[target begin];
[[self.currentLine.brush sprite] visit];
[target end];
}
这是一个让它工作的黑客,但当然让它运行得很慢。在后台线程中调用begin和end只会导致无法呈现任何内容
我希望能够调用begin,在后台线程中完成所有绘图,然后调用end,但我尝试过的所有内容都没有做任何事情或者让EAGLView
翻转。
答案 0 :(得分:1)
CCRenderTexure
的工作原理是将opengl输出重定向到自身,以便完成的绘图保存在精灵上。这意味着,在一次操作中,您需要拨打begin
来完成所有绘图,然后拨打end
。
当在后台线程上运行时,CCDirector
正在主线程中进行自己的绘制调用,这样当你调用begin并尝试在该状态下执行多个函数时,导演也会画出各种奇怪的东西错误。
end
。