##### グラフィック関数 - グラフィック関数

# njDrawTriangle3D

三角形を3D空間に描画

### 書式

  void njDrawTriangle3D( *p, n, attr )
  NJS_POINT3COL *p
  Int n
  Uint32 attr

### 引数

  *p | 描画する三角形の頂点座標リスト
  n | 描画する点の数
  attr | アトリビュート(描画方法を選択)

### 戻値

  なし

### 解説

  n個の三角形を描画します。 使用できるアトリビュートは、

  描画する三角形の状態の指定

  NJD_DRAW_NORMAL | 放射状の三角形
  NJD_DRAW_CONNECTED | 連結した三角形

  三角形の描画方法の指定

  指定なし | ワーヤーフレーム
  NJD_FILL | 塗りつぶし
  NJD_TRANSPARENT | 半透明
  NJD_USE_TEXTURE | テクスチャーあり

  に大きく分かれます。上記の6つのアトリビュートを“|”で繋げる事によって矛盾しない複数の アトリビュートを指定する事が可能です。

### 用例

      100個の三角形をランダムに描画します。
      #define TRI_NUM 100
      #define trisize 50.f
      int i;
      NJS_POINT3COL p;
      NJS_POINT3 point[TRI_NUM*3];
      NJS_COLOR color[TRI_NUM*3];
      float trisize_half = trisize/2.f;
      float trihight;
      p.p = point;
      p.col = color;
      p.tex = NULL;
      p.num = TRI_NUM*3;
      trihight = trisize_half*njSqrt(3.f);
      i = 0;
      do{
        p.p[i].x = njRandom()*1000.f-500.f;
        p.p[i].y = njRandom()*1000.f-500.f;
        p.p[i].z = -3000.f+(float)i;
        p.col[i].argb.a = (Uint8)(0x80*njRandom());
        p.col[i].argb.r = (Uint8)(0x80*njRandom());
        p.col[i].argb.g = (Uint8)(0x80*njRandom());
        p.col[i++].argb.b = (Uint8)(0x80*njRandom());
        p.p[i].x = p[i-1].p.x+trisize_half;
        p.p[i].y = p[i-1].p.y+trihight;
        p.p[i].z = p[i-1].p.z;
        p.col[i].argb.a = (Uint8)(0x80*njRandom());
        p.col[i].argb.r = (Uint8)(0x80*njRandom());
        p.col[i].argb.g = (Uint8)(0x80*njRandom());
        p.col[i++].argb.b = (Uint8)(0x80*njRandom());
        p.p[i].x = p[i-2].p.x-trisize_half;
        p.p[i].y = p[i-2].p.y+trihight;
        p.p[i].z = p[i-2].p.z;
        p.col[i].argb.a = (Uint8)(0x80*njRandom());
        p.col[i].argb.r = (Uint8)(0x80*njRandom());
        p.col[i].argb.g = (Uint8)(0x80*njRandom());
        p.col[i++].argb.b = (Uint8)(0x80*njRandom());
      } while(i < TRI_NUM*3);
      njDrawTriangle3D(&p,TRI_NUM, NJD_DRAW_NORMAL|NJD_FILL);
      本関数は3Ｄ描画関数である為、本関数を用いて描画を行う前に必ず
      ビュー、スクリーン、及びマトリクススタック等の設定を行う必要があります。

### 備考

  アトリビュート NJD_DRAW_NORMAL は他のアトリビュートと組み合わせて使用する場合は省略可能です。

njDrawTriangle3D

COPYRIGHT © SEGA ENTERPRISES, LTD., 1998