void njInitVertexBuffer( op, om, tp, tm, pt ) Uint32 op Uint32 om Uint32 tp Uint32 tm Uint32 pt
op | 不透明ポリゴン登録バッファサイズ |
om | 不透明モディファイアボリューム登録バッファサイズ |
tp | 半透明ポリゴン登録バッファサイズ |
tm | 半透明モディファイアボリューム登録バッファサイズ |
pt | 抜きテクスチャ登録バッファサイズ |
3Vレーテンシモードの場合、アロケートされるサイズは(引数×4)バイトであり、 これをダブルバッファで使用します。
また、引数の1つをマイナスにすると2Vレーテンシモードになります。 2Vレーテンシモード場合、通常のバッファはシングルバッファになり マイナスにしたバッファは直接ハードに転送します。
3Vレーテンシと2Vレーテンシでの取得メモリサイズは以下のようになります。
●3Vレーテンシの場合
取得メモリサイズ=(op+om+tp+tm+pt)×4+352(内部必要領域) バイト
●2Vレーテンシで上記と同じ設定する場合
取得メモリサイズ=100(マイナスをつけたバッファ)+(それ以外のバッファ)×4+352(内部必要領域) バイト
例:
3Vの場合
njInitVertexBuffer( 100000, 0, 100000, 0, 0);
op=100000×4バイト=400000バイト
tp=100000×4バイト=400000バイト
内部必要領域=352バイト
合計800352バイト
2Vレーテンシで上と同じ設定する場合
njInitVertexBuffer(−100000, 0, 50000, 0 ,0);
op=マイナスは100バイト
to=50000×4バイト=200000バイト(シングルバッファなので半分でよい)
内部必要領域=352バイト
合計200452バイト
不透明ポリゴンと、半透明ポリゴンの頂点バッファを それぞれ400Kバイト確保します。 njInitVertexBuffer( 100000, 0, 100000, 0 , 0);
Nindowsで表示される値はバッファサイズを2で割った値です。
エラーコールバック変数
システムのエラーのとき、_nj_fatal_err_callback_変数にエラー情報が戻ります。
また、NJD_FATAL_ERR_OVERFLW_VTXBUFの時システムをストールしないように変更しました。 (バッファオーバーによりメモリが壊れ、動かなくなる可能性はあります)
NJD_FATAL_ERR_NOQEUE_INTR | 割り込みハンドラ内からDMAを起動しようとしたがQUEUEに空きがなかった |
NJD_FATAL_ERR_OVERFLW_VTXBUF | 登録した頂点数がバッファをオーバーフローしていた |
NJD_FATAL_ERR_TOO_MANY_VTX | NativeBufferが根本的に足りない(登録ISP/TSPバッファがアロケートされたNativeBuufferより大きい) |
NJD_FATAL_ERR_V_NOT_RESPOND | VSYNCウェイト内でシーケンスがまったく進まなくなっている |