iOS のファイルから 4 チャネルのテクスチャ データを読み込みたいので、テクスチャを (連続した) マップと見なします
[0,1]x[0,1] -> [0,1]x[0,1]x[0,1]x[0,1]
fileformat を使用すると.png
、XCode/iOS はファイルを画像と見なし、各コンポーネントrgb
にa
(事前乗算されたアルファ) を乗算して、データを破損します。これをどのように解決すればよいですか?例としては
- コンポーネントで 2 つのテクスチャを使用する
rgb
(3 チャンネル) - 分割後のアルファ
- 別のファイル形式を使用する
これらのうち、私は別のファイル形式を使用することが最善の解決策だと考えています。GL 圧縮ファイル形式 (PVRTC?) は Apple プラットフォームに依存せず、低解像度 (4 ビット) のようです (参照)。
編集: 以下の私自身の答えが当てはまる場合、iOS で png の 4 チャネル データを取得することはできません。OpenGL は画像を表示するのではなく画像を作成するためのものであるため、何らかの方法で 4 チャネル データをロードできるはずです。png は画像のファイル形式です (圧縮は 4 チャンネルすべてに依存します。ただし、1 つのチャネルの圧縮は他のチャネルとは無関係です)。そのため、別のファイル形式を使用する必要があると主張する人もいるかもしれません。では、他のどの圧縮ファイル形式を使用する必要がありますか? iOS で読みやすく統合できるのはどれですか?
更新: 「コンビナトリアル」は、4 チャンネルの事前乗算されていないテクスチャをロードする方法について言及していたので、彼に正しい答えを与える必要がありました。ただし、そのソリューションには、私が気に入らないいくつかの制限がありました。私の次の質問は、「iOSのpngファイルから生の4チャンネルデータにアクセスする」です:)
4 チャンネルの png データを読み込めないのは、ライブラリの設計が悪いと思います。私は、システムが自分より賢くなろうとするのが好きではありません。