Ale*_*llo 3 java multithreading android synchronization opengl-es
我正在制作一个游戏,我已经创建了一个单独的线程来加载资产,3d模型等.这样UI线程在加载时就不会锁定.但是,加载的线程需要GL10的实例才能正确加载和映射纹理.
下面是对问题的概述,以便您更好地理解我的困境:
1.我的Renderer类创建并启动"加载"线程.
2.加载线程从资源
3 加载模型和纹理.'glGenTextures'是加载纹理所必需的,但加载线程没有GL10的实例
我试着给加载线程提供由Renderers onSurfaceCreated方法给出的GL10实例,但是它不起作用.(我想它会被删除,或搞砸了,或者当函数结束时)
那么,我怎样才能将GL10的工作实例传递给我的加载线程?
答案是你不能.
在opengl android中,gl对象/上下文仅存在于呈现循环中.据我所知,你不能在该线程之外使用gl函数.
原因很简单,opengl是一个不是线程证明的状态机 - 一个主要原因是,如果你确实添加了测试状态机,当你想要绘制一些东西并且你改变一个像在同一时间混合-...
你想要做的是在你的渲染循环中完成线程中非gl相关的所有工作(打开位图读取点文件...),你添加一个if(与gl相关的东西){...}当你的线程准备就绪时,更改标志,让渲染循环知道你想要加载一些东西
| 归档时间: |
|
| 查看次数: |
1855 次 |
| 最近记录: |