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 回答