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)×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ウェイト内でシーケンスがまったく進まなくなっている 


njInitVertexBuffer
COPYRIGHT © SEGA ENTERPRISES, LTD., 1998,1999