Sint32 njReadRectangleTexturePartNum( n, texaddr, p )
Uint32 n
Sint8 *texaddr
Uint32 *p
n カレントテクスチャリストのテクスチャ番号 texaddr ファイル名又はテクスチャメモリのアドレス p 矩形領域の情報を格納したデータのポインタ
1 成功 -1 失敗
カレントテクスチャリスト中の指定したテクスチャをメインメモリに転送します。転送可能なテクスチャはRectangle形式かStride形式のテクスチャです。 矩形領域の情報を格納したポインタを示す引数 pは、Uint32の7個のデータを持つ配列へのポインタです。 配列データにはそれぞれ次の内容を格納してください。
配列 内容 p[0] width 転送領域幅 p[1] height 転送領域高さ p[2] src_x 転送元スタートX座標(左0) p[3] src_y 転送元スタートY座標(上0) p[4] dst_x 転送先スタートX座標(左0) p[5] dst_y 転送先スタートY座標(上0) p[6] dst_w 転送先テクスチャ幅
転送元の矩形領域は(src_x,src_y)-(src_x+width,src_y+height)です。
転送先の矩形領域は(dst_x,dst_y)-(dst_x+width,dst_y+height)としdst_wに 転送先のテクスチャの幅を入れます。 dst_wが0の場合、転送先のテクスチャ幅は widthの値、高さは heightの値になります。 この場合は dst_x、dst_y は無視されます。
p[0] = 128; /* width */ p[1] = 128; /* height */ p[2] = 100; /* src_x */ p[3] = 100; /* src_y */ p[4] = 100; /* dst_x */ p[5] = 100; /* dst_y */ p[6] = 256; /* dst_w */ /* Read rectangle area */ njReadRectangleTexturePartNum(0,texbuf,p); /* Swap RED bit with BLUE bit */ for(j = 100;j < 228;j++){ for(i = 100;i < 228;i++){ color = *(Sint16*)((Uint32)texbuf + i*2 + j*256); r = (color >> 11)& 0x1F; b = (color & 0x1F); *(Sint16*)((Uint32)texbuf + i*2 + j*256) = (color & 0x07E0) | (b << 11)|(r); } } /* Reload texture */ njReLoadRectTexturePartNum(0,texbuf,p);
njReadRectangleTexturePartNumG() グローバルインデックス番号によるテクスチャの矩形領域をメインメモリへ転送