TGA (Truevision Graphics Adapter) ファイルフォーマットについて。
ビットマップファイルと同じような構造である。
ピクセルデータが圧縮されている場合は、展開する必要がる。
展開されたピクセルデータは、ビットマップと同様に、BGR の順に並んでおり、上下反対になっている。
フォーマット
ブロック | オフセット | サイズ | 内容
|
---|
ヘッダー | 0 | 18 | 1 | ヘッダーの後に続く、IDの長さ
|
1 | 1 | カラーマップの有無
|
2 | 1 | データ形式
|
3 | 2 | カラーマップの位置
|
5 | 2 | カラーマップの長さ
|
7 | 1 | カラーマップエントリーのビット数
|
8 | 2 | X
|
10 | 2 | Y
|
12 | 2 | 幅
|
14 | 2 | 高さ
|
16 | 1 | ピクセルのビット数
|
17 | 1 | 属性
|
ID | 18 | 不定 | ID
|
データ | 不定 | 不定 | ピクセルデータ
|
フッター | 不定 | 26 | 4 | 拡張データのポジション
|
4 | デベロッパーデータのポジション
|
18 | 文字列
|
※構造体を定義する場合は、パッキングサイズを1バイト単位にする必要がある。
データ形式
値 | ビット | 圧縮 | 概要
|
---|
0 | 0000,0000 | n/a | イメージなし
|
1 | 0000,0001 | なし | カラーマップ
|
2 | 0000,0010 | なし | フルカラー
|
3 | 0000,0011 | なし | 白黒
|
9 | 0000,1001 | 連長圧縮 | カラーマップ
|
10 | 0000,1010 | 連長圧縮 | フルカラー
|
11 | 0000,1011 | あり | 白黒
|
32 | 0010,0000 | ハフマン符号化、差分符号化、連長圧縮 | カラーマップ
|
33 | 0010,0001 | ハフマン符号化、差分符号化、連長圧縮 | カラーマップ、四分木形式
|
連長圧縮(ランレングス圧縮、RLE : Run Length Encoding)
ピクセルデータの最初の1バイトが、ランレングスパケットである。
ランレングスパケットの上位1ビットが、ランレンスグスチャンクかどうかのフラグ、下位7ビットが、ピクセルの繰り返し数である。
次に、最初のピクセルデータが続く。
ランレングスチャンクであれば、次のチャンクのデータが続く。
通常チャンクであれば、ピクセルの繰り返し数だけピクセルデータが続き、次のチャンクへ続く。
次の例は、32ビットの不透明の赤いピクセルが4つ並んだ、未圧縮のピクセルデータである。
これが、ランレングスチャンクであれば、次のようになる。
最初の 0x83 は、上位1ビットが1なので、ランレングスチャンクを示す。
下位7ビットの3は、最初のピクセルを3回繰り返す事を示す。
通常チャンクであれば、次のようになる。
最初の0x03は、上位1ビットが0なので、通常チャンクを示す。
下位7ビットの3は、最初のピクセルの後に、3つのピクセルデータが続く事を示す。
© GPU (Game Programming Unit)