##### 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