質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

OpenGL ES

携帯電話のような組込み機器のためにデザインされたOpenGLのサブセットです。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Q&A

解決済

1回答

2032閲覧

[ETC/ASTC]圧縮テクスチャが元のpngよりファイルサイズ増大

clateratail

総合スコア24

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

OpenGL ES

携帯電話のような組込み機器のためにデザインされたOpenGLのサブセットです。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

0グッド

0クリップ

投稿2020/07/26 09:55

圧縮テクスチャはファイルサイズが少量で済むと聞いたのですが
512x512のpngをETC1テクスチャ化すると
サイズが 10k(png) => 120k(pkm) に増えてしまいます

Androidではapk書き出しでzip化され
その 120k(pkm) => 500バイト まで減るのですが
通常時にpngよりファイルサイズが大きいのは、正しい挙動でしょうか?

大量の圧縮テクスチャをapkに含めず、zip化したものを外部ファイルとしてDLさせる場合
解凍すると、100M => 1G 程になってしまいます

展開後の1Gをストレージに保存するのが正しいのか
zip状態の100Mを保存し、起動するたび、メモリやキャッシュに展開して使用するのか
あるいはzipのまま使う方法があるのか...
何だか根本の考え方が間違っている気がするのですが、おかしな点を指摘して頂けると助かります

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

圧縮に関しては詳しくはありませんが、ETC1とpngでは圧縮アルゴリズムが違いますので、そんなものかと。

上記によると、ETC1はファイルサイズはおおよそ1/6になるそうです。
それに対してpngは、大雑把に言えば同じデータをまとめるよう圧縮しますので、内容によってサイズがまちまちです。
(写真と、白一色の画像のサイズを見比べてみれば、差が目に見えて違ってくるのではないでしょうか)

展開後の1Gをストレージに保存するのが正しいのか
zip状態の100Mを保存し、起動するたび、メモリやキャッシュに展開して使用するのか
あるいはzipのまま使う方法があるのか...

ご自身でメリット・デメリットを把握した上で、お決めください。

zipの状態で保存し、実行時に全て展開する

単純に考えて1Gのメモリを使う事になるでしょう。
いくら最近のスマホはメモリが多いからといって、動くかどうかすら怪しいです。

展開した状態で保存する

1Gのストレージを使う事になりますが、うーん、どうでしょう。
ユーザの事を考えると、ちょっと気が引けますね。

zipの状態で保存し、実行時に必要なものだけ展開する

androidであれば、使った事はありませんが、ZipInputStreamで処理できるのではないですか。

iOSは知りません。

png画像を使って、圧縮しないで保存する

先のリンク先にも書かれてますが、png画像をzipで圧縮しても、サイズは変わりません。
であれば、zipなど使わずに、png画像そのままで保存するという手もあるかと思います。
(一つのファイルにまとめる必要があるならば、アーカイバを自作しましょう。それぐらいは頑張ってください)

ただ、pngはETC1と違い、GPUでは扱えない画像フォーマットです。
大抵の場合、CPUでRGBA32などの無圧縮画像に変換してGPUに送る事になると思いますが、そうなると当然実行時のメモリの負荷が高くなります。

投稿2020/07/27 12:34

編集2020/07/27 12:46
katsuko

総合スコア3538

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

katsuko

2020/07/27 12:50

「RGBA32などのR画像」は「RGBA32などの無圧縮画像」です。 (編集画面だとそうなっているのだけどなぁ…)
clateratail

2020/07/28 10:05

非常に丁寧な回答ありがとうございます! 現実的な選択肢で、必要な物だけを都度解凍して使用する事にします ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問