Ninjaライブラリ - システム関数

njInitVertexBuffer

頂点データ登録用バッファの初期化

書式

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)x4 + 352(内部必要領域) バイト

●2Vレーテンシで上記と同じ設定する場合

取得メモリサイズ = 100(マイナスを付けたバッファ) + (それ以外のバッファ)x4 + 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 Byte確保します。
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_VTXNativeBufferが根本的に足りない(登録ISP/TSPバッファがアロケートされたNativeBuufferより大きい)
NJD_FATAL_ERR_V_NOT_RESPONDVSYNCウェイト内でシーケンスがまったく進まなくなっている


njInitVertexBuffer
COPYRIGHT © SEGA ENTERPRISES, LTD., 1998