Java Android并发渲染器设计
我目前正在Android上编写一款游戏,其设计灵感来自于。即,双线程方法,一个逻辑线程和一个渲染线程 我在逻辑线程中设置了一个轻量级渲染模块,它基本上只处理想要渲染的游戏对象。它将渲染命令发送到渲染线程,如“在x,y处渲染精灵f” 我喜欢这个设计,但目前我的问题在于资源的创造。假设精灵f需要一个纹理,它将在加载时在逻辑线程中请求该纹理。问题在于,由于OpenGL上下文位于渲染线程中,因此纹理只能由渲染线程中的用户创建。目前,逻辑线程和渲染线程之间唯一的同步点是在帧结束时交换渲染队列,我希望保持这种方式 如何解决希望在逻辑线程上创建纹理、vbo等,同时仍然只在渲染线程上渲染内容的问题?共享OpenGL上下文是一个好方法吗?或者发动机的其他设计Java Android并发渲染器设计,java,android,multithreading,opengl-es,rendering,Java,Android,Multithreading,Opengl Es,Rendering,我目前正在Android上编写一款游戏,其设计灵感来自于。即,双线程方法,一个逻辑线程和一个渲染线程 我在逻辑线程中设置了一个轻量级渲染模块,它基本上只处理想要渲染的游戏对象。它将渲染命令发送到渲染线程,如“在x,y处渲染精灵f” 我喜欢这个设计,但目前我的问题在于资源的创造。假设精灵f需要一个纹理,它将在加载时在逻辑线程中请求该纹理。问题在于,由于OpenGL上下文位于渲染线程中,因此纹理只能由渲染线程中的用户创建。目前,逻辑线程和渲染线程之间唯一的同步点是在帧结束时交换渲染队列,我希望保持这
编辑:一个备选方案是使用另一个队列,您可以在其中放置来自逻辑线程的请求。如“创建纹理”等。渲染线程将迭代此队列并在开始渲染其他队列之前对其进行处理。我开始喜欢这个解决方案了。OpenGL要求从渲染线程调用glBindTexture。我强烈建议您使用GLSurfaceView.Renderer onSurfaceCreated方法(由渲染线程调用)进行绑定。如果重新创建GL上下文,将再次调用该上下文以重新绑定所有内容 如果选择从另一个线程驱动它,请通过在GLSURFACHEVIEW对象上调用queueEvent向渲染线程传递可运行的。注意onSurfaceCreated尚未调用的比赛 祝你的比赛好运