「スプライト」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
imported>Administrator
imported>Administrator
17行目: 17行目:
  
 
;準備するもの
 
;準備するもの
* 背景画像
+
 
* 表示画像 = 透明部分を「0」で埋めた画像
+
*背景画像
* マスク画像= 透明部分を「1」、非透明部分を「0」で埋めた1ビットの画像
+
*表示画像 = 透明部分を「0」で埋めた画像
 +
*マスク画像= 透明部分を「1」、非透明部分を「0」で埋めた1ビットの画像
  
 
;手順
 
;手順
# 背景画像とマスク画像を[[ビット]]単位で[[AND演算]]する
+
 
#: 透明部分は背景がそのまま残り、画像を描画したい部分だけが0でクリアされる。
+
#背景画像とマスク画像を[[ビット]]単位で[[AND演算]]する
# 表示画像と背景画像を[[ビット]]単位で[[OR演算]]する
+
#:透明部分は背景がそのまま残り、画像を描画したい部分だけが0でクリアされる。
#: 画像のピクセル列は前の操作で背景が消された領域にぴったりとはまる。
+
#表示画像と背景画像を[[ビット]]単位で[[OR演算]]する
 +
#:画像のピクセル列は前の操作で背景が消された領域にぴったりとはまる。
  
 
最近の[[フレームワーク]]では表示画像の特定色を透明色として設定しておけば、マスク画像を用意しなくても自動的に合成してくれるものばかりなので、上記のような手順で合成することは少ないと思われる。
 
最近の[[フレームワーク]]では表示画像の特定色を透明色として設定しておけば、マスク画像を用意しなくても自動的に合成してくれるものばかりなので、上記のような手順で合成することは少ないと思われる。
 +
[[カテゴリ:画像処理]]

2019年5月16日 (木) 04:24時点における版

スプライト英語:sprite)とは、コンピューター上で画像を表示する際に背景画像と合成表示することをいう。

主にゲームで使われる技術であり、キャラクターを表示する際に背景をくり抜いて表示することをいう。その他にも動画の字幕などにも使われている。大雑把にいえばPhotoshopなどのペイントソフトによくある「レイヤー」とほぼ同じ概念である。

専用ハードウェアでの実装

初期のコンピューターではハードウェアの機能としてスプライトが用意されており非常に高速に処理することができた。拡大縮小や回転などをサポートするハードウェアも多く、それらも含めスプライトと呼ばれた。

専用ハードウェアによるスプライトはファミコンスーパーファミコンPCエンジンメガドライブなどの世代までの家庭用ゲーム機でよく使われた。

GPUでの実装

近年のコンピューターではスプライトがハードウェアで実装されていることがほぼない。代替手段としてGPUによる高速化を期待して以下のような手法が使われる。

この手法は初代プレイステーションでよく使われた。初期のプレイステーションゲームはハードウェアスプライトがないため2Dゲームはセガサターンより劣化していることが多かったが、この手法が考案されてからはその差はなくなった。

ソフトウェアでの実装

専用ハードウェアもGPUもないコンピューターでは以下のような手順でソフトウェア的に合成する。PC-9801PC/ATDirectX登場以前のフレームワークの弱かった時代のWindowsなどでよく使われた。

準備するもの
  • 背景画像
  • 表示画像 = 透明部分を「0」で埋めた画像
  • マスク画像= 透明部分を「1」、非透明部分を「0」で埋めた1ビットの画像
手順
  1. 背景画像とマスク画像をビット単位でAND演算する
    透明部分は背景がそのまま残り、画像を描画したい部分だけが0でクリアされる。
  2. 表示画像と背景画像をビット単位でOR演算する
    画像のピクセル列は前の操作で背景が消された領域にぴったりとはまる。

最近のフレームワークでは表示画像の特定色を透明色として設定しておけば、マスク画像を用意しなくても自動的に合成してくれるものばかりなので、上記のような手順で合成することは少ないと思われる。