void njDrawTriangle3D( *p, n, attr ) NJS_POINT3COL *p Int n Uint32 attr
*p | 描画する三角形の頂点座標リスト |
n | 描画する点の数 |
attr | アトリビュート(描画方法を選択) |
描画する三角形の状態の指定
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描画関数である為、本関数を用いて描画を行う前に 必ずビュー、スクリーン、およびマトリクススタック等の設定を 行う必要があります。