njDrawSprite3D | English
    ▲|INDEX|■
３Ｄスプライトの描画

### 書　式

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

### 引　数

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

### 返　値

  なし

### エラー

  なし

### 機　能

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

  スプライトはＸＹＺ空間に描画されます。

  アトリビュートは以下の設定が可能です。

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

      スプライト構造体

      	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
      	３Ｄ座標を設定します。
      	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;

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

### 用　例

  ２５６ｘ２５６のテクスチャを２枚使用し、それぞれ４分割して８つのテクスチャアニメーションパターンを作成します。

      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 = 0;
        sprite.sx = 1.0f;
        sprite.sy = 1.0f;
        sprite.p.x = 0.0f;
        sprite.p.y = 0.0f;
        sprite.p.z = 0.0f;

        njInitSystem( NJD_RESOLUTION_640x480, 1 );
        njInitMatrix( matrix, 128 );
        njInit3D( vbuf, 1024, abuf, fbuf, 32 );
        njInitView( &view );
        njCreateLight( &light, NJD_DIR_LIGHT );
        njSetView( &view );
        njInitTexture( tex, 100 );

        njLoadTexture( &texlist );

        while(1) {
          njClearMatrix();

          njTranslate( NULL, 0.f, 0.f, -400.f );
          njDrawSprite3D( &sprite, 2, NJD_SPRITE_ANGLE );

          sprite.angle += 100;

          ......
        }

      }

### 備　考

### 関　連

  njDrawSprite2D()
  njSetConstantMaterial()
  njLoadTexture()
  njDrawModel()

njDrawSprite3D |
    ▲|INDEX|■