njDrawTriangle3D
3D空間に三角形を描画します。

書 式

#include <Ninja.h>
void njDrawTriangle3D(*p, n, attr)
NJS_POINT3COL *p
描画する三角形の頂点座標リスト
n
描画する点の数
attr
アトリビュート(描画方法を選択)

返 値

なし

機 能

n個の三角形を描画します。

使用できるアトリビュートは

描画する三角形の状態を指定する
NJD_DRAW_NORMAL 独立した三角形を描画。
NJD_DRAW_FAN 放射状に三角形を描画。
NJD_DRAW_CONNECTED連結した三角形を描画。

三角形の描画方法を指定する (指定しない場合はワイヤーフレーム表示)
NJD_FILL 三角形の内部を塗りつぶす。
NJD_TRANSPARENT 半透明で描画。
NJD_USE_TEXTURE テクスチャーを使用して描画。

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

用 例

100個の三角形をランダムに描画します。
#define TRI_NUM 100
#define trisize 50.f

int i;
NJS_POINT3 point[TRI_NUM*3];
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