Ninjaライブラリ - 3Dグラフィック関数

njDrawTriangle3D

3D空間に三角形を描画

書式

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

引数

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

戻り値

なし

解説

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

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

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

三角形の描画方法の指定

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

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


用例

100個の三角形をランダムに描画します。
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);
本関数は3D描画関数である為、本関数を用いて描画を行う前に
必ずビュー、スクリーン、およびマトリクススタック等の設定を
行う必要があります。

備考

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

njDrawTriangle3D
COPYRIGHT © SEGA ENTERPRISES, LTD., 1998,1999