GPG雑学:ゲームで使う画像サイズはなぜ2の乗数なのか?(上)
先日、知り合いの人気ブロガーK先生(仮名)に
このブログを見せました。
K先生(大学教授、人気ブロガー、イケメン?)
K先生は僕のブログをしっかり読んくださり、
こうフィードバックしてくれました。
・・・
確かに、難しい内容が下手な説明で
更に分かりにくいな、と感じられます。
そういうわけで、
今日は少し軽いテーマで話してみたいと思います。
知っておいたら良い、知らなくても良い(どうでも良い)
ゲーム制作の豆知識
今日の話は 画像サイズ です。
ゲーム業界に長く努めたデザイナーさんなら
ゲームで使う画像を作るとき、大体こんなサイズで
納品することが分かります。
「256 x 256」 「512 x 512」 「1024 x 1024」 ...
この数字の共通点は
2の乗数で表現できる定数です。
プログラマーには親密な数字ですが
感覚的に複雑に見えます。
それより 「500 x 500」 や 「1000 x 1000」 の方が
分かりやすくて良さそうです。
Q:こんな複雑な数字で合わせないと
いけないですか?
A:いいえ、実は2の乗数にしなくても
特に問題はありません。
ただし、使っては良くない数字ならあります。
● 良くない数字とは? ●
ゲーム会社に働いているプログラマーHさん
ある日、Hさんに2枚の画像ファイルが納品されました。
Hさんは、B.pngの 「520 x 520」 サイズが
どうしても気になってたまりません。
なぜでしょう?
実際に上の2つの画像を、メモリ上にロードすると
こうなります。
B.png が A.png の2倍になっています。
その理由は、コンピュータが画像を
どうやって処理しているのかに関係あります。
● ビデオメモリの働き方 ●
メモリは画像を載せる領域を確報するとき
2倍ずつ拡張する傾向があります。
大体こんな感じです。
つまり、メモリサイズは
2 → 4 → 8 → 16 → ... → 512 → 1024 → ...
の値で増えていきます。
A.png 「500 x 500」 は 「512 x 512」 の中に入りますが
B.png 「520 x 520」 は 「512 x 512」 を超えてしまうので
結局 「1024 x 1024」 まで拡張しないといけません。
Hさんが感じている不快感は、少しの差で
大きい無駄な領域ができてしまうことが原因です。
まるで20L袋にギリギリ入らないゴミを捨てるため
40Lの袋を用意する気持ちです。
サイズをどう決めるかによって、無駄な領域が
どのくらい出来てしまうのかが決まります。
サイズ事に発生する残り領域の例
そして、その無駄な領域を0にするサイズが2の乗数です。
そういうわけで、デザイナーさんは
効率良くメモリ容量を使うため
2の乗数の形でサイズを合わせてくれるのです。
※最悪のケースは、上の例みたいに
2の乗数をギリギリ超えるサイズです。
では、なぜコンピューターは2倍拡張する方法で
画像をメモリに載せるのでしょうか?
それは、コンピューターがイメージ処理するとき
効率よく計算するためです。
この話は次の記事で詳しく説明します。
※ 元ブログから移転された記事です。
コメント
コメントを投稿