1

前のテクスチャがまだ進行中のときに別のテクスチャを変更しようとすると、アプリケーションがクラッシュします。

これが私のコードです。

-(IBAction)changeTexture:(id)sender {

self.text = [arrayEyes objectAtIndex:[sender tag]];
NGLTexture *texture;
texture = [NGLTexture texture2DWithFile:self.text];

NGLMaterialMulti *material = (NGLMaterialMulti *)mesh.material;

[[material materialWithName:@"lambert16SG"] setDiffuseMap:texture];

mesh.material = material;
[mesh compileCoreMesh];

}

4

1 に答える 1

0

このコードは、プログラム実行の最初にヒットしたと仮定します。そのため、しばらくの間、モデルはまだバックグラウンド スレッドに読み込まれています。

そのため、別のスレッドで処理されている間に NGLTexture がメッシュのマテリアルに割り当てられている可能性があります。例外をスローするか、完全にクラッシュする割り当ての問題に遭遇する可能性があります。モデル ローダーへの割り当てを行う前に、モデル ローダーの処理が完了するまで待ってみてください。NGLMeshDelegate プロトコルを調べて、 -meshLoadingDidFinish: ハンドラーで割り当てを行ってみてください。

于 2013-03-22T22:22:36.520 に答える