njDrawSprite2D English
■|INDEX|
2Dスプライトの描画

書 式

#include <Ninja.h>
void  njDrawSprite2D( sp, n, pri, attr )
NJS_SPRITE  *sp
Int    n
Float    pri
Uint32    attr

引 数

sp
スプライト構造体へのポインタ
n
スプライト番号
pri
プライオリティ
attr
アトリビュート

返 値

なし

エラー

なし

機 能

2Dのスプライトを描画します。
スプライトは簡単にテクスチャや、そのアニメーションを描画する事ができます。

プライオリティは、Z値を設定します。奥がマイナス方向で−1.0〜−65535.0までです。
アトリビュートは以下の設定ができます。

NJD_SPRITE_ANGLEテクスチャの回転を有効にします
NJD_SPRITE_COLORテクスチャのカラー演算を有効にします
カラーデータはnjSetConstantMaterial()でセットした値を使います
NJD_SPRITE_HFLIPテクスチャを左右反転します
NJD_SPRITE_VFLIPテクスチャを上下反転します
NJD_SPRITE_HVFLIPテクスチャを上下左右反転します
NJD_SPRITE_ALPHA半透明を使用する場合にセットします
抜きテクスチャの場合でもセットします

スプライト構造体
typedef struct {
  NJS_POINT3  p;       /* point            */
  NJS_VECTOR  v;       /* normal           */
  Float       sx,sy;   /* scale            */
  Angle       ang;     /* angle            */
  NJS_TEXLIST *tlist;  /* texture list     */
  NJS_TEXANIM *tanim;  /* animation list   */
} NJS_SPRITE;

p
描画位置を設定します。
p.xとp.yでスクリーン座標を設定します。(左上原点)
2Dスプライトでは、p.zは使用しません。
v
現バージョンでは使用しません。
sx,sy
横縦の拡大率を指定します。
ang
回転角を設定します。ただし、attrにNJD_SPRITE_ANGLEを設定した場合有効になります。
tlist
スプライトで使用するテクスチャのテクスチャリストを設定します。
テクスチャリストはあらかじめnjLoadTexture()でロードされていなければなりません。
tanim
テクスチャアニメーションパターンを設定します。
この構造体の並びがテクスチャ番号に対応します。

テクスチャアニメーション構造体
typedef struct {
  Sint16      sx,sy;   /* size             */
  Sint16      cx,cy;   /* center           */
  Sint16      u1,v1;   /* tex1             */
  Sint16      u2,v2;   /* tex2             */
  Sint16      texid;   /* texture id       */
  Sint16      attr;    /* attribute        */
} NJS_TEXANIM;

sy,sy
スプライトのサイズを指定します。
テクスチャのサイズとは無関係に指定できます。
cx,cy
テクスチャの中心座標を設定します。左上からの相対位置で指定しこの位置が描画位置に対応します。また、回転の中心になります。
u1,v1
テクスチャ左上のUV座標を設定します。
テクスチャサイズに関係なく0〜255を指定します。
u2,v2
テクスチャ右下のUV座標を設定します。
テクスチャサイズに関係なく0〜255を指定します。
texid
テクスチャリストの何番目のテクスチャを使用するか設定します。
attr
現バージョンでは使用しません。

用 例

256x256のテクスチャを2枚使用し、それぞれ4分割して8つのテクスチャアニメーションパターンを作成します。
NJS_TEXANIM  anim[] = {
  { 128,128, 64, 64,  0,  0,127,127,  0, 0 },
  { 128,128, 64, 64,128,  0,255,127,  0, 0 },
  { 128,128, 64, 64,  0,128,127,255,  0, 0 },
  { 128,128, 64, 64,128,128,255,255,  0, 0 },
  { 128,128, 64, 64,  0,  0,127,127,  1, 0 },
  { 128,128, 64, 64,128,  0,255,127,  1, 0 },
  { 128,128, 64, 64,  0,128,127,255,  1, 0 },
  { 128,128, 64, 64,128,128,255,255,  1, 0 },
};

main() {
  NJS_SPRITE  sprite;

  各種初期設定

  sprite.tlist = &texlist;
  sprite.tanim = anim;
  sprite.ang = 0x4000;
  sprite.sx = 1.0f;
  sprite.sy = 1.0f;
  sprite.p.x = 320.0f;
  sprite.p.y = 240.0f;

  njLoadTexture( &texlist );
  njDrawSprite2D( &sprite, 2, -150.f, NJD_SPRITE_ANGLE );

    ......

}

備 考


関 連

njDrawSprite3D()
njSetConstantMaterial()
njLoadTexture()

njDrawSprite2D
■|INDEX|

Copyright SEGA ENTERPRISES, LTD., 1997