ホーム < ゲームつくろー! < ツール編


その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 );

と調べる事が可能です。