その8 BinaryToCode(v1.00)
本章で公開するBinaryToCode.exeは指定のバイナリファイルにあるバイナリデータを埋め込み型のコードに変換します。例えば下の「A」という絵が描かれたビットマップのデータを次のようなコードに変換してしまいます:
// Resource Code
//
const unsigned char rc_font_a[] = {
66, 77, 248, 0, 0, 0, 0, 0,
0, 0, 54, 0, 0, 0, 40, 0,
0, 0, 8, 0, 0, 0, 8, 0,
0, 0, 1, 0, 24, 0, 0, 0,
0, 0, 0, 0, 0, 0, 18, 11,
0, 0, 18, 11, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 255, 255,
255, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
24, 24, 24, 159, 159, 159, 195, 195,
195, 78, 78, 78, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
123, 123, 123, 156, 156, 156, 78, 78,
78, 198, 198, 198, 0, 0, 0, 0,
0, 0, 0, 0, 0, 3, 3, 3,
225, 225, 225, 51, 51, 51, 0, 0,
0, 228, 228, 228, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255,
230, 230, 230, 0, 0, 0, 0, 0,
0, 93, 93, 93, 183, 183, 183, 0,
0, 0, 0, 0, 0, 180, 180, 180,
96, 96, 96, 0, 0, 0, 0, 0,
0, 3, 3, 3, 225, 225, 225, 48,
48, 48, 33, 33, 33, 237, 237, 237,
9, 9, 9, 0, 0, 0, 0, 0,
0, 0, 0, 0, 108, 108, 108, 168,
168, 168, 135, 135, 135, 144, 144, 144,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 9, 9, 9, 255,
255, 255, 255, 255, 255, 39, 39, 39,
0, 0, 0, 0, 0, 0, 0, 0,
};
このコードを埋め込むと、実行時に上の情報がメモリ上に確保されます。こうすると例えばDirectXのD3DXCreateTextureFromMemory関数などでテクスチャを作成する事などができるようになります。
こういう埋め込みデータの良い点はリソースを内包することで情報を非公開にできる点です。例えばプログラム上でしか使わないハッシュ値やシェーダ用の特殊テクスチャデータなど、外部に置くのもどうかと思う情報をコード内に置く事で余計なリソースの公開を防ぎます。欠点はアプリケーションが存在している間メモリを占有し続ける事です。
名前 | バージョン | 公開日 | |
BinaryToCode | 1.00 | 2010. 1.2 |
○ バージョンレポート
v1.00 (2010. 1. 2)
・ 初出実装
○ 使用方法
BinaryToCodeはコンソール上で動く実行ファイルです。次のようにコード化したいファイルを指定します:
3つの引数があります。
第1引数:元ファイルへのパスを指定します。
第2引数:コード上での変数名を指定します。
第3引数:出力ファイルへのパスを指定します。
型はconst unsigned char型の配列です。コンパイル時固定なのでサイズを、
unsigned int size = sizeof( rc_font_a );
と調べる事が可能です。