1

GLKTextureLoaderは32ビットPNG(GIMPで作成)をロードするために使用します。GLKTextureInfo返された は、シミュレーターと iPad の両方で表示されますGLKTextureInfoAlphaStateNonPremultiplied。とGLKTextureLoaderを試してみると、iPadまたはシミュレーターで動作させることができますが、両方では動作しませんalphaState!glBlendFunc

GLKTextureLoader のオプションなしで、次のブレンド機能を使用:

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

iOS シミュレーターに乗ります (テキストのグローが明るいことに注意してください)。

ここに画像の説明を入力

そして 4 番目の iPad では (テキストの輝きが暗いことに注意してください)

ここに画像の説明を入力

違いはなぜですか?はalphaState同じです。どうなり得るか?

4

1 に答える 1

3

Apple Discussionで答えを見つけました。

私はまったく同じ問題を抱えています。XCode は、ヘッダー チャンクが (IHDR ではなく) CgBI になるように PNG 画像を変換し、Apple のヘッダーの文字がデータがプライベート形式であることを示しているため、libpng などのサード パーティのライブラリを混乱させます。この操作はターゲット デバイスに対してのみ行われ、シミュレーターには影響しません。この問題を回避するには 4 つの方法があります (最も簡単なものから最も難しいものまで)。

1) 画像の名前を別の名前 (.ppng など) に変更すると、XCode パッケージ化ツールはファイルを無視します。

2) 次のリンク (http://www.imgtec.com/powervr/insider/sdk/KhronosOpenGLES1xMBX.asp) によると、ターゲットごとに次のビルド設定定義を追加する必要があります。IPHONEOPTIMIZEOPTIONS=-skip-PNGs XCode プロジェクト設定のどこにこれを追加すればよいのか、まだわからないと言って恥ずかしいです。

3) PNG デコーダに Apple の CgBI フォーマットを扱えるように教えてください。

4) Cocoa UIImage クラスまたは Texture2D.m クラスを使用します。

編集:「ビルド設定」の「パッケージ化」で、デフォルトで「はい」に設定されている「PNG ファイルの圧縮」オプションを見つけました。

于 2012-11-28T01:44:44.770 に答える