我正在使用 LibGDX 制作游戏。我想根据需要同时加载/卸载资产。但是,等待资产在主线程中加载会导致延迟。为了解决这个问题,我创建了一个后台线程来监控需要加载哪些资产(纹理、声音等)并适当地加载/卸载它们。
AssetManager.update()
不幸的是,从该线程调用时出现以下错误。
com.badlogic.gdx.utils.GdxRuntimeException: java.lang.RuntimeException: No OpenGL context found in the current thread.
我一run
开始就尝试在主线程中设置后台线程,只处理前几个屏幕,一切正常。我还可以将算法更改为在同一个线程中从一开始就将所有内容加载到内存中,这也可以。但是,两者都不能在后台线程中工作。
当我在 Android 上使用 OpenGL ES 2.0(以奇怪的方式灵活)而不是在 Windows 上运行它时,一切运行良好,我什至可以获得图像的像素尺寸 -但纹理呈现黑色。
我的搜索告诉我,这是OpenGL 上下文绑定到单个线程的问题,但仅此而已。这就解释了为什么当我把它推到主线程时一切正常,而不是当我把它放在另一个线程中时。如何解决此上下文问题?