我正在尝试Mesh
在加载屏幕期间为我的 libGDX 游戏预加载我的对象。我已经按照这里关于编写我自己的加载程序的过程进行了操作。所以我基本上复制了 libGDXPixmapLoader
并调用了它MeshLoader
。Mesh
唯一的问题是,因为它是异步的,所以 OpenGL 上下文在创建时不可用。有谁知道我如何异步加载 a Mesh
with AssetManager
?我已经成功地使用了SynchronousAssetLoader
而不是,AsynchronousAssetLoader
但这会导致我的加载屏幕出现延迟。有任何想法吗?
问问题
1045 次
1 回答
2
请参阅 AssetLoadingTask API,update() 方法(由 AssetManager 使用)
/*Updates the loading of the asset. In case the asset is loaded with an
* AsynchronousAssetLoader, the loaders AsynchronousAssetLoader#loadAsync(AssetManager, String, AssetLoaderParameters)
* method is first called on a worker thread.
* Once this method returns, the rest of the asset is loaded on the rendering
* thread via AsynchronousAssetLoader#loadSync(AssetManager, String, AssetLoaderParameters).
因此,您不能在加载 Pixmap 时完全异步加载 Mesh,因为后者不是 openGL 资产。
您可以复制TextureLoader
哪个异步加载像素数据(如像素图),然后在渲染线程上同步创建纹理。
您能做的最好的事情是异步计算您的顶点/索引并同步进行绑定。
编辑 对于那些不阅读评论的人......如果您使用 ObjLoader 加载大网格,您可以遵循第三条评论中给出的 Kieran 方法。
于 2012-12-27T23:00:08.437 回答