6

viewDidLoad からのテクスチャのロードは正常に機能します。GLKViewControllerしかし、アップデートからそれらを読み込もうとすると、エラーが発生します。ビューを変更せずに新しい背景テクスチャを交換したいので、これを行います。

これは、最後のアップグレードの前に機能していました。タイミング的に運が良かったのかもしれません。一部のスレッドがビジーであるか何かが原因で失敗していると思われますか?

これがエラーの全文です。

Domain=GLKTextureLoaderErrorDomain Code=8 "The operation could not be completed. (GLKTextureLoaderErrorDomain error 8.)" UserInfo=0x10b5b510 {GLKTextureLoaderGLErrorKey=1282, GLKTextureLoaderErrorKey=OpenGL エラー}

問題は、GLKViewController更新機能からテクスチャを安全にロードできるかということです。または、アプローチを再考して、ビュー全体または何かをリロードする必要がありますか?

これが私の機能です:

-(void) LoadTexture:(NSString *)texture textureInfo:(GLKTextureInfo**)textureInfo
{
    NSString *path = [[NSBundle mainBundle] pathForResource:texture ofType:@"png"]; 
    NSError *error = nil;

    (*textureInfo) = [GLKTextureLoader textureWithContentsOfFile:path options:nil error:&error];

    NSLog(@"path %@", path);

    if(!(*textureInfo))
    {
        NSLog(@"Failed to load texture %@ %@", texture, error);  
    }
    else
    {
        NSLog(@"LOADED Texture %@ !!! YAY!!! ", texture);
    }
}

ありがとう、

デビッド

4

4 に答える 4

0

ほぼ同じエラーが発生しました:

エラー Domain=GLKTextureLoaderErrorDomain Code=8 "(null)" UserInfo={GLKTextureLoaderGLErrorKey=1282, GLKTextureLoaderErrorKey=OpenGLES エラー。}

プログラムの切り替えが原因です。現在使用されていないプログラムで glUniform1i を呼び出そうとすると、Open GL ES エラー ブレークポイントが発生します。

正しいプログラムを使用して修正し、エラー ブレークポイントをトリガーしないようにします。

于 2018-01-25T07:55:02.033 に答える
0

私はあなたと同様の問題を抱えていました。この問題を解決するために私がしたことは、ゲーム全体で使用したいすべてのテクスチャを含むクラスを作成することでした。viewDidLoad:クラスを初期化し、すべてのテクスチャをロードしました。テクスチャのいずれかを使用する必要があるとき、それらは既に読み込まれており、問題は発生しませんでした。

例えば。のviewDidLoad

GameTextures *textures = [GameTextures alloc] init];
[textures LoadAll];

LoadAll は、後で使用するためにすべてのテクスチャをロードします。

次に、テクスチャを使用する必要がある場合

[myBackground setTexture: textures.backgroundTexture2];

これが役に立ったことを願っています:)

于 2012-07-12T05:30:39.813 に答える