rgb2c.htm
7.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
<HTML>
<HEAD>
<TITLE>HTML 文書</TITLE>
<META NAME="GENERATOR" CONTENT="Internet Assistant for Microsoft Word 2.0j">
</HEAD>
<BODY>
<P>
<B>rgb2c(1P) <BR>
</B>
<P>
<B>関数名<BR>
</B>
<P>
<B>rgb2c</B>
<P>
→ .rgbファイルをCデータ構造体へコンバートします。 <BR>
<P>
<B>構文<BR>
</B>
<P>
rgb2c [-m name][-f fmt][-o output][-s bits][-t citype][-l r,g,b][-h
r,g,b][-F][-P]
<P>
[-Q][-S smask][-X][-b][-r] infile.rgb<BR>
<P>
<B>説明<BR>
</B>
<P>
<B>rgb2c</B>コマンドはSGI RBGイメージファイルを読み込み、標準出力としてCデータ構造体を生成します。入力イメージは1〜4面のイメージを持つことができます。第1面の入力ファイルは輝度のみであると見なされます。第2の入力ファイルはインテンシティ/アルファのみであると見なされます。第3の入力ファイルはRGBとして、第4の入力ファイルはRGBAとして取り扱われます。
<BR>
<P>
現在サポートされている出力フォーマットは輝度(4/8bit)、輝度/アルファ(4/8/16bit)、とRGBA(16/32bit)です。その他のどのようなタイプやビットサイズのコンビネーションを指定しても、上記の1つが選択されます。
<BR>
<P>
コマンドラインオプションは以下の通りです <BR>
<P>
<B>-m name</B>
<P>
Cデータ構造体名。デフォルトは"texture"です。
<P>
<B>-f fmt</B>
<P>
出力フォーマットの指定です。I、IA、RGBAの内から選択してください。
<P>
<B>-o output</B>
<P>
出力フォーマットの指定です。選択は、.c出力に対するC、ミップマップ化された.c出力のためのMIP、異なったレベルを供給するとともにミップマップ化された
.c出力のためのMIPSUPPLIED、あるいは加工していないASCII書式のためのRAWであるMIPSUPPLIEDの使用時は、テクスチャファイルは次のようにネーミングされるべきです:
name0.rgb, name1.rgb, name2.rgb等です。name0.rgbは、トップレベルのイメージであり、それぞれの連続したイメージは、前のイメージに正確に半分のサイズ(xとyで)です。
<P>
<B>-s bits </B>
<P>
出力データのビットサイズを指定します(4、8、16、32)。
<P>
<B>-t citype </B>
<P>
カラーインデックスのタイプ(C:カラー、I:輝度)。
<P>
<B>-l r,g,b </B>
<P>
補間のために下位の色を指定する。0、0、0へのデフォルトとする。
<P>
<B>-h r,g,b </B>
<P>
補間のために上位の色を指定する。255、255、255へのデフォルトとする。
<P>
<B>-F </B>
<P>
垂直方向にイメージを入れ替えます。
<P>
<B>-P </B>
<P>
<A HREF="../gdp/gDPLoadBlock.htm" >gDPLoadBlock</A>(3P)で使用するために、テクセル列のパディング動作を切り替る(デフォルトはパディング有効)。
<P>
<B>-Q </B>
<P>
Quadricate(反復それぞれの4回のエントリー)。ルックアップテーブルはCIタイプテクスチャに対しての出力です。
このオプションは、load_blockコマンド(ハードウェアバージョン1のためにされたように)を使用してTLUTsをロードする時に使用されます。
<P>
<B>-S smask </B>
<P>
奇数行の上の32ビットワードをスワップする。その32-bit wordsは、テクセルでbit
smask をトグル動作しています。
<P>
<B>-X </B>
<P>
すべての宣言されたオブジェクトを32バイト長の倍数にするためにエクストラのパディングを加えます。
<P>
<B>-b </B>
<P>
それぞれのタイルを0.5でシフトしながらトグル動作をする。 これは、mipマップレベルが供給される(出力タイプMIPSUPPLIED)時、シフトが実行される時、より低いレベルが通過された時に、必要です。通常、このオプションは使用しません。
<P>
<B>-r </B>
<P>
生データを含まない。 これは、出力タイプがMIPあるいはMIPSUPPLIEDである時、使用可能です。それは、メモリスペースを食う無関係のデータを含むことを避けるためです。
C出力と一緒にこのオプションを使用してはいけません。<BR>
<P>
<B>参照<BR>
</B>
<P>
<A HREF="flt2c.htm">flt2c</A>(1P)<BR>
<P>
<B>補足資料<BR>
</B>
<P>
rgbフォーマット<BR>
<P>
rgbフォーマットには2種類あります。1つはVERBATIMと呼ばれるものでデータ圧縮を使用せずにそのまま使用するフォーマットで、もう1つはRLE(Run
Length Encording)と呼ばれるデータを圧縮してストアするフォーマットです。両者とも同じ形式の512ロングワードのヘッダファイルとそれに続くデータという形で構成されます。
<BR>
<P>
ヘッダについては4Dgifts/iristools/include/image.h中にIMAGEというストラクチャで定義されています。それぞれの要素は以下のようになります。
<BR>
<P>
<B>unsigned short imagic</B>
<P>
ワードデータの上位と下位のバイトの順序が正しいことチェックするのと、IRISで使用しているフォーマットであることを示すID
<P>
<B>unsigned short type</B>
<P>
rgbファイルのフォーマットを示します。VERBATIM(1)、VERBATIM(2)、RLE(1)、RLE(2)という風に「フォーマット形式(1ピクセルあたりのバイト数(1or2))」という形で表します。
<P>
<B>unsinged short dim</B>
<P>
データのディメンション(1~3)を表します。1は1次元でxのみのデータ。2は2次元でx×yデータ、3は3次元でx×y×zのデータです。
<P>
<B>unsigned short xsize</B>
<P>
スクリーン上でのxのピクセルサイズ
<P>
<B>unsigned short ysize</B>
<P>
スクリーン上でのyのピクセルサイズ
<P>
<B>unsigned short zsize</B>
<P>
色数を表します。rgbの場合は3、モノクロの場合は1です。
<P>
<B>unsigned long min</B>
<P>
全てのデータの値の最小値
<P>
<B>unsigned long max</B>
<P>
全てのデータの値の最大値
<P>
<B>unsigned long wastebyte</B>
<P>
VERBATIMの時は0。RLEの時はデータとして書き込まれているバイト数を示
します。
<P>
<B>char name[80]</B>
<P>
データの名前(isetnameで変更します。)
<P>
<B>long colormap</B>
<P>
色情報のソースを示します。CM-NOMAL, CM-DITHERED, CM-SCREEN,
<P>
CM-COLORMAPがあります。
<P>
<B>long file</B>
<P>
データファイルをオープンしたり、クリエイトしたときのファイルディスクリ
プタが入ります。(テンポラリ領域)
<P>
<B>unsigned short flags</B>
<P>
ファイルのプロテクションフラグが入ります。
<P>
<B>short dorev</B>
<P>
0 or 1。1の時は、データがワードバウンダリで上位と下位が入れ替わっていることを示し、データを取り扱うときに上位と下位のバイトをスワップします。
<P>
<B>short x</B>
<P>
xのサイズを入れておくため等の領域。(テンポラリ領域)
<P>
<B>short y </B>
<P>
yのサイズを入れておくため等の領域。(テンポラリ領域)
<P>
<B>short z</B>
<P>
zのサイズを入れておくため等の領域。(テンポラリ領域)
<P>
<B>short cnt</B>
<P>
ファイルに書き出すバイトカウントなどで使用します。(テンポラリ領域)
<P>
<B>unsigned short *ptr</B>
<P>
0
<P>
<B>unsigned short *base</B>
<P>
処理終了後、バッファをフラッシュアウトしてファイルに書き出すときなどに使用するポインタ。
(テンポラリ領域)
<P>
<B>unsigned short *tmpbuf</B>
<P>
変数の形式変換のような場合に用いるポインタ(テンポラリ領域)
<P>
<B>unsigned long offset</B>
<P>
ファイルの先頭からヘッダの終わりまでのオフセット(512L)
<P>
<B>unsigned long rleend</B>
<P>
RLEの時、データのリード/ライト時に、処理したデータの終わりをデータの先
頭からのバイト数で示します。
<P>
<B>unsigned long *rowstart</B>
<P>
RLEの時、Headerの直後にテーブルとして用意されるデータの各行の先頭をデータの先頭からのバイト数で示すテーブルのポインタ。
<P>
<B>long *rowsize</B>
<P>
rowstartのテーブルの後にテーブルとして用意されるデータの各行のサイズ(バ
イト)を示すテーブルポインタ<BR>
<P>
以上がヘッダです。次にイメージデータですが、これはヘッダの後に置かれ、VERBATIMの時は以下のようにデータが置かれます。
<BR>
<P>
まず、全ての行のRが順に並び、次に全ての行のG、そして全ての行のBが並びます。
<BR>
<P>
RLEの場合は圧縮フォーマットを使用しており、そのためにヘッダの終了直後から各行の先頭バイトカウント(rowstart)とサイズ(rowsize)が置かれます。カラーインデックスの順番はVERBATIMと同様、全ての行のR、全ての行のG、全ての行のBです。その後圧縮されたデータが続きます。
<BR>
<P>
また、RLEの場合のデータの圧縮ルールは以下のルールに従っています。同じデータが3byte以上続く場合、(データ数)(データ内容)の順に記述され、それ以下や、異なるデータが続く場合は(128+異なるデータ数)(異なるデータ)(異なるデータ)・・・(異なるデータ)というふうに記述されます。例えば次のようなパターンの場合は、
<BR>
<P>
AAAABCDEEEFGGGHH
<P>
↓
<P>
4A 131BCD 3E 129F 3G 130HH<BR>
<P>
となります。<BR>
<P>
尚、rgbaフォーマットの場合は、rgbフォーマットにaを追加したものと考えてください。
<BR>
</BODY>
</HTML>