java-在Android的单独线程上获取GL10实例

我正在做一个游戏,并且创建了一个单独的线程来加载资产,3D模型等.这样,UI线程在加载时不会锁定.但是,用于加载的线程需要GL10实例才能正确加载和映射纹理.

这里是问题的概述,以便您可以更好地了解我的困境:
1.我的Renderer类创建并启动“加载”线程.
2.加载线程从资产加载模型和纹理
3.需要’glGenTextures’来加载纹理,但是加载线程没有GL10的实例

我尝试只给加载线程提供由Renderers onSurfaceCreated方法提供的GL10实例,但是它不起作用(我猜想它会被删除或弄乱,或者在函数结束时出现错误)

那么,如何将GL10的工作实例传递给加载线程?

解决方法:

答案是你做不到.

在opengl android中,gl对象/上下文仅存在于渲染循环中.
据我所知,您不能在该线程之外使用gl函数.

原因很简单,opengl是状态处理程序,不是线程证明的
-一个主要原因是,如果您确实添加了测试,它将减慢渲染速度
-作为状态机,当您想要绘制某些东西并且同时更改状态(例如混合)时会发生什么
-…

您要做的是完成与线程无关的所有工作(打开位图读取点文件…)
在渲染循环中添加一个if(与gl相关的操作){…}
当线程准备就绪时,请更改标志,以使渲染循环知道您要加载某些内容

上一篇:mysql – 数据库同步服务器到本地


下一篇:java – 用于乘法矩阵的同步线程