2

Meshロード画面で libGDX ゲームのオブジェクトをプリロードしようとしています。独自のローダーの作成については、こちらのプロセスに従いました。だから私は基本的にlibGDXをコピーしてそれPixmapLoaderを呼び出しましたMeshLoader。唯一の問題は、非同期であるため、 のMesh作成時に OpenGL コンテキストを使用できないことです。Meshwithを非同期にロードする方法を知っている人はいますAssetManagerか? SynchronousAssetLoaderの代わりにを正常に使用しましたAsynchronousAssetLoaderが、ロード画面で遅延が発生します。何か案は?

4

1 に答える 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 をロードするときにメッシュを完全に非同期でロードすることはできません。後者は openGL アセットではないからです。

TextureLoaderピクセル データを非同期的に (ピックスマップのように) ロードしてコピーし、レンダリング スレッドで同期的にテクスチャを作成することができます。

あなたができる最善のことは、頂点/インデックスを非同期的に計算し、バインディングを同期的に行うことです。

編集 コメントを読まない人のために... ObjLoader を使用して大きなメッシュをロードしている場合は、3 番目のコメントにある Kieran のアプローチに従うことができます。

于 2012-12-27T23:00:08.437 に答える