void *njCnkDirectObjectCompileLight( object, ptr, light )
NJS_CNK_OBJECT *object
void *ptr
NJS_DIRECT_COMPILE_LIGHT *light
object チャンクオブジェクトデータポインタ ptr ダイレクトモデルデータポインタ light ライトの設定
次のデータポインタ
チャンクオブジェクトをダイレクト関数用にコンパイルします。 コンパイル時にライトの計算をし、描画するときにはライトの計算を行いません。 そのため、描画性能が向上します。 ダイレクトモデルデータポインタは32バイトアラインになっていなければ なりません。 コンパイル前にテクスチャの設定が必要です。サポートしているチャンク形式は次のとおりです。
頂点チャンク NJD_CV, NJD_CV_D8, NJD_CV_VN, NJD_CV_VN_D8 ストリップチャンク NJD_CS, NJD_CS_UVH, NJD_CS_UVN
Sint32 UserInit(void) { NJS_DIRECT_COMPILE_LIGHT light; njSetDirectLight( -0.011413F, -0.145482F, 0.989295F ); njSetDirectLightIntensity( 1.0f, 0.2f ); njSetDirectLightColor( 1.000000F, 0.938650F, 0.791411F ); direct1 = syMalloc( njCnkDirectObjectCompileSize( object1 ) + njCnkDirectObjectCompileLightSize( object2 ) ); direct2 = njCnkDirectObjectCompile( object1, direct1 ); light.x = -0.011413F; light.y = -0.145482F; light.z = 0.989295F; light.inten = 1.0f; light.ambient = 0.2f; light.r = 1.000000F; light.g = 0.938650F; light.b = 0.791411F; njCnkDirectObjectCompileLight( object2, direct2, &light ); njSetDirectClip(); return USER_CONTINUE; } Sint32 UserMain(void) { njPushMatrixEx(); njTranslate( NULL, 0.f, 0.f, -10.f ); njRotateXYZ( NULL, xx,yy,zz ); njDirectDrawObject( direct1 ); njDirectDrawObject( direct2 ); xx += 257; yy += 179; zz += 193; njPopMatrixEx(); return USER_CONTINUE; }
njSetDirectLight() njDirectDrawObject関数用光源の方向・設定 njSetDirectLightIntensity() njDirectDrawObject関数用光源の強さの設定 njSetDirectLightColor() njDirectDrawObject関数用光源の色の設定 njSetDirectClip() njDirectDrawObject関数用クリッピング設定 njCnkDirectObjectCompile() njDirectDrawObject関数用モデルデータ作成 njCnkDirectObjectCompileSize() njDirectDrawObject関数用コンパイルサイズの取得 njCnkDirectObjectCompileLightSize() njDirectDrawObject関数用コンパイルサイズの取得 njDirectDrawObject() ダイレクトオブジェクトの描画