2011-07-03 42 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需求。