「プラナー方式」の版間の差分
(ページの作成:「'''プレーナー'''(英語:Planar)とは、コンピューターグラフィックスにおける二次元画像の表現方式のひとつである。 =...」) |
(→欠点) |
||
24行目: | 24行目: | ||
一方で[[ピクセル]]単位で処理したい場合には、たとえばRGBのプレーナーだと1ピクセルを得るのに3カ所もの[[データ]]にアクセスして、さらに合成した値を使用せねばならず、非常に効率が悪い。 | 一方で[[ピクセル]]単位で処理したい場合には、たとえばRGBのプレーナーだと1ピクセルを得るのに3カ所もの[[データ]]にアクセスして、さらに合成した値を使用せねばならず、非常に効率が悪い。 | ||
<source lang="csharp"> | <source lang="csharp"> | ||
+ | // プレーナーは面倒 | ||
Pixel GetPixel(x, y) | Pixel GetPixel(x, y) | ||
{ | { | ||
29行目: | 30行目: | ||
| G[x,y] << 8 | | G[x,y] << 8 | ||
| B[x,y] | | B[x,y] | ||
+ | } | ||
+ | |||
+ | // パックドピクセルなら簡単 | ||
+ | Pixel GetPixel(x, y) | ||
+ | { | ||
+ | return RGB[x,y]; | ||
} | } | ||
</source> | </source> |
2014年10月3日 (金) 14:33時点における版
プレーナー(英語:Planar)とは、コンピューターグラフィックスにおける二次元画像の表現方式のひとつである。
概要
プレーナーはある画像を表現する際に、色空間の色成分ごとに分離した状態で保持している形式のことをいう。
たとえばRGBであれば以下のように分離された形式でデータが保持されているものをプレーナー方式という。
- RRRRRRRRRRRRRRRR〜
- GGGGGGGGGGGGGGG〜
- BBBBBBBBBBBBBBBB〜
Photoshopなどでいえば原色ごとにレイヤーがあるような感じである。
逆に分離されていないものをパックドピクセル方式という。
- RGBRGBRGBRGBRGB〜
利点
プレーナーは色ごとに処理したいアルゴリズムにおいて扱いやすい形式であるとされる。 これには画像圧縮や画像認識などの多くが該当する。
有名なところではJPEGなどのが採用している。 JPEGでは、赤色を圧縮する、緑色を圧縮する、青色を圧縮するという感じで色ごとに処理するようになっている。
欠点
一方でピクセル単位で処理したい場合には、たとえばRGBのプレーナーだと1ピクセルを得るのに3カ所ものデータにアクセスして、さらに合成した値を使用せねばならず、非常に効率が悪い。
// プレーナーは面倒
Pixel GetPixel(x, y)
{
return R[x,y] << 16
| G[x,y] << 8
| B[x,y]
}
// パックドピクセルなら簡単
Pixel GetPixel(x, y)
{
return RGB[x,y];
}
最近の多くのプラットフォームではディスプレイへの表示はパックドピクセル方式が一般的である。 DirectXやOpenGLなどを駆使したコンピューターグラフィックスを表示することに主眼をおいているひとたちにはパックドピクセルが一般的である。
主な採用事例
PC-9801シリーズ
PC-9801シリーズのGRAM(今でいうVRAM)はプレーナー形式が採用されており、合成処理はハードウェア内部で自動的に行われていた。 しかもRGB各色1ビットと濃淡1ビットというバイト単位ではなくビット単位という鬼のように面倒な代物であった。
プレーナー形式で疑似スプライトを実現しようとするとアホみたいに面倒な処理が必要であり、ゲームなどには不向きであったため、多くのプログラマーは手軽にパックドピクセル形式で扱えるようにするライブラリを作っていた。