#include <nnsys/g2d/g2d_CharCanvas.h>
void NNS_G2dCharCanvasMakeCell1D(
NNSG2dCellData* pCell,
const NNSG2dCharCanvas* pCC,
int x,
int y,
int priority,
GXOamMode mode,
BOOL mosaic,
GXOamEffect effect,
GXOamColorMode color,
int charName,
int cParam,
NNSG2dOBJVramMode vramMode,
BOOL makeBR
);
void NNS_G2dCharCanvasMakeCell2DRect(
NNSG2dCellData* pCell,
const NNSG2dCharCanvas* pCC,
int x,
int y,
int priority,
GXOamMode mode,
BOOL mosaic,
GXOamEffect effect,
GXOamColorMode color,
int charName,
int cParam,
BOOL makeBR
);
| pCell | [OUT] セルデータを格納するバッファへのポインタ。 |
| pCC | [IN] CharCanvas へのポインタ |
| x | [IN] セルの中心座標(CharCanvas座標系) |
| y | [IN] セルの中心座標(CharCanvas座標系) |
| priority | [IN] セルのプライオリティ |
| mode | [IN] セルのOBJモード |
| mosaic | [IN] セルのモザイクの有無 |
| effect | [IN] セルのエフェクト |
| color | [IN] CharCanvas のカラーモード |
| charName | [IN] CharCanvas が使用している先頭キャラクタネーム |
| cParam | [IN] カラーパレットNo. |
| vramMode | [IN] OBJ VRAM 容量 |
| makeBR | [IN] 境界矩形情報を付加するかどうかを指定します。 |
なし。
NNS_G2dCharCanvasInitForOBJ1D()
および
NNS_G2dCharCanvasInitForOBJ2DRect()
で初期化した CharCanvas を実際に画面に表示するためのセルを構築します。
この関数で構築したセルをG2Dレンダラを用いて描画することで
CharCanvasを容易に回転/拡縮/移動させながら表示する事が出来ます。
pCell にはセルデータとセルデータから参照される各種情報を格納するのに
十分な大きさのバッファを確保して指定します。
必要なバッファのサイズは
NNS_G2dCharCanvasCalcCellDataSize1D()
または
NNS_G2dCharCanvasCalcCellDataSize2DRect()
で求めることが出来ます。
pCCにはセルとして表示するCharCanvasへのポインタを指定します。
中心座標(x, y)はレンダラでセルを 描画する場合に配置の基準となる点です。 特に回転を行う場合は、この点を中心として回転することになります。
OBJ VRAM容量 vramMode にはハードウェアのVRAM最大容量設定に応じて、以下のいずれかを指定します。
| NNS_G2D_OBJVRAMMODE_32K | 使用可能 OBJ VRAM 最大容量 32KB |
| NNS_G2D_OBJVRAMMODE_64K | 使用可能 OBJ VRAM 最大容量 64KB |
| NNS_G2D_OBJVRAMMODE_128K | 使用可能 OBJ VRAM 最大容量 128KB |
| NNS_G2D_OBJVRAMMODE_256K | 使用可能 OBJ VRAM 最大容量 256KB |
makeBR では境界矩形情報を付加するかどうかを指定します。
これは g2dcvtr の -br オプションに相当します。
上記以外の引数については SDK API リファレンスの G2_SetOBJAttr() を参照してください。
この関数は内部での作業用バッファをスタックに確保します。 作業用バッファのサイズは pCell に必要なバッファサイズの約4/3倍で、 比較的大きなサイズとなるためスタックオーバーフローが発生しないように注意してください。
この関数は使用するOBJ数/キャラクタ数を最小にしようとしますので 8x32ピクセル等の細長いOBJを使用する可能性があります。 このような細長いOBJを回転させるとOBJの端が欠ける事となってしまいます。 細長いOBJがセルに含まれないようにするためにはキャラクタ単位でのCharCanvasの幅や高さが 素因数として2を多く含むようにします。 幅と高さが共にキャラクタ単位で8の倍数であれば細長いOBJは含まれません。
2007/02/16 初版
2005/07/12 初版