Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iPhone上分离OpenGL调用和更新_Iphone_Multithreading_Opengl Es - Fatal编程技术网

在iPhone上分离OpenGL调用和更新

在iPhone上分离OpenGL调用和更新,iphone,multithreading,opengl-es,Iphone,Multithreading,Opengl Es,说到线程,我是个新手,所以任何指向正确方向的指针都会帮上大忙。我有一个游戏,既有一个相当重的更新功能,也有一个相当重的绘图功能。我假设draw函数中的大部分权重将发生在GPU上。因此,我希望在绘图时开始计算下一帧的更新。现在,我的游戏循环非常简单: Game->Update1(); Game->Update2(); Game->Draw(); Update1()更新不改变游戏状态的变量,因此它可以独立于Draw运行。也就是说,两者之间不应该有数据之争。它也是CPU处理的主要部

说到线程,我是个新手,所以任何指向正确方向的指针都会帮上大忙。我有一个游戏,既有一个相当重的更新功能,也有一个相当重的绘图功能。我假设draw函数中的大部分权重将发生在GPU上。因此,我希望在绘图时开始计算下一帧的更新。现在,我的游戏循环非常简单:

Game->Update1();
Game->Update2();
Game->Draw();
Update1()
更新不改变游戏状态的变量,因此它可以独立于Draw运行。也就是说,两者之间不应该有数据之争。它也是CPU处理的主要部分

Update2()。此外,我相信
Draw()
函数对CPU的占用很轻,而对GPU的占用很重

我希望发生的是,当GPU忙于处理所有绘图功能时,下一帧的Update1()可以使用CPU来准备下一帧的更新。我似乎并没有自动获得这个功能——绘制周期似乎需要一点时间,并阻止一切直到完成,这并不理想

正确的方法是什么?这已经发生了吗?我只是没有正确地观察它?

这取决于Draw()包含的内容,您应该自动获得CPU-GPU并行性,除非Draw()中的某些调用在CPU和GPU之间同步。一个简单的例子是使用glReadPixels。

这取决于Draw()包含的内容,您应该自动获得CPU-GPU并行性,除非Draw()内部的某些调用在CPU和GPU之间同步。一个简单的例子是使用glReadPixels