2011-07-03 45 views
0

渲染到CCRenderTexture我有一个渲染循环,我想在后台运行,这样我可以控制播放循环使得它无论是动画效果慢或快的速度。现在,我使用的睡眠,并呼吁开始,在主线程上CCRenderTexture最后我想用精灵每次:科科斯,如何从后台线程

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

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

这是得到它的工作,但当然可以很运行黑客慢。在后台线程调用开始和结束只是导致没有任何东西呈现在所有

我想能够调用开始,做所有我的绘图在后台线程,或者让我的EAGLView翻转出来。

+0

我认为问题是'[texture begin]'被调用,然后我开始在后台线程中绘制我的东西,但主线程也试图绘制东西 – Affian

+0

调用开始和结束绑定并将GL视图解除绑定到这个精灵使得事物在纹理而不是主要帧缓冲区上呈现。因此,在后台线程中运行,最终会导致正常的渲染循环尝试绘制新的绑定视图。 – Affian

回答

1

CCRenderTexure作品,使得能够完成图纸保存在你的精灵OpenGL的输出重定向到自身。这意味着,在一次操作中需要调用begin做所有的绘图,然后调用end

当在后台运行的线程的CCDirector正在它在主线程自己绘制调用,这样,当你调用开始,并尝试做多的功能在该状态下的主任正在制定过于造成种种奇怪的错误。正常渲染操作恢复之前被称为

end需求。