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