2017-12-18 15 views
3

私はAssetManagerでロードしてレンダリングするモデルを持っています。これは、g3djファイルで、pngテクスチャを持ちます。すべてのファイルはファイルシステムに存在します。テクスチャの無効なレンダリング

私の場合、サーバーからモデルを読み込んでゲームに追加します。 The textureは存在しますが、正しく表示されません。

ModelBatchはメソッドの後に追加するとモデルを完全に黒くレンダリングします。ApplicationListenerです。 create()メソッドでモデルを追加すると、正しくレンダリングされます。

何が問題ですか?私はすでにRenderContextを作り直してみました。

いくつかのコード:

@Override 
    public void create() { 
     //setup camera, environment, create ModelBatch instance 
     assetManager = new AssetManager(); 
     assetManager.load("models/f_base.g3dj", Model.class); 
     assetManager.finishLoading(); 
     Model model = assetManager.get("models/f_base.g3dj"); 
     modelInstance = new ModelInstance(model); 
    } 

@Override 
public void render() { 
    if (assetManager.update()) { 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT); 
     cameraController.update(); 
     batch.begin(camera); 
     batch.render(modelInstance); 
     batch.end(); 
    } 
} 

invalid model

+0

は、あなたのテキストを検閲場合、それは良くなると思いますuredイメージtbh。人々は仕事からStackOverflowをブラウズします。漫画の裸出のみですが、多くの職場では適切なことについて厳しいルールがあります。 – Columbo

+1

"ModelListは、ApplicationListenerのcreate()メソッドの後にModelBatchを追加するとモデルを完全に黒くレンダリングします。" - あなたはいつそれを作成していますか?私の推測では、OpenGLESコンテキストがバインドされていないスレッドで作成しています。 – Columbo

答えて

0

最後に、私は解決策を見つけました。あなたはAssetManagerリソースのロードを強制場合「(スレッド毎に一度ログイン)なし現在のコンテキストでのOpenGL ES APIに呼び出す」::AssetManager負荷リソースを作成するには

assetManager.finishLoading(); 

をasynchronyously必要な問題がAssetManagerがmessgeで例外をスローすることです

assetManager.load(fileHandle.path(), Model.class); 

を、あなたはupdate()メソッドを使用してモデルをレンダリングできるかどうかをチェック:ちょうどキューにリソースを追加

public void render() { 
    if (assetManager.update()) { 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT); 
     cameraController.update(); 
     batch.begin(camera); 
     //model loaded. you can render it. 
     batch.end(); 
    } 
} 
関連する問題