2004-09-16版以前のバージョンとの非互換性についてのお知らせ

# 2004-09-16版又はそれ以前のバージョンとの非互換性についてのお知らせ

## コールバックの非互換性

2004-10-11版ではNNS_G3dDraw関数内においてSBC１つにつき１つのコールバック関数を設定することができるようになっています（従来バージョンでは全体で１つのコールバック関数のみ）。しかしながら、そのために一部従来バージョンとの非互換性が生じています。

- NNSG3dRS構造体からcbFunc, cbCmdPtr, cbCmd, cbTimingメンバが削除されました。従ってコールバック内でこれらのメンバを操作するコードを記述した場合、コンパイルが通らなくなります。
- NNS_G3dRenderObjSetCallBack関数の第3引数が無効になりました。SBCのアドレスを指定してコールバックを起動する機能は削除されました。

## コールバック関係のコードがコンパイルできない場合の対処法

### コールバック内でコールバック関数、コールバック生起条件を変更している場合

コールバック関数内でNNSG3dRS構造体のcbFunc, cbCmd, cbTimingメンバを変更している場合、次のようにコードを置き換えます。

1. コールバック関数内でNNS_G3dRSResetCallBack関数を使用して現在使用しているコールバックを解除します。
2. その後、NNS_G3dRSSetCallBack関数を使用して新たにコールバック関数や生起条件を指定します。

### 複数のコールバックを使用する場合

2つ目以降のコールバックは、NNS_G3dRenderObjSetCallBack関数では登録することができません。NNSG3dRenderObj構造体のサイズが必要以上に大きくならないようにするため、NNS_G3dDraw関数内で描画前にNNSG3dRS構造体の設定を行ない、コールバックを登録するようになっています。

1. NNS_G3dRenderObjSetInitFunc関数を使用して、NNS_G3dDraw関数の実行時において描画前に実行される関数をNNSG3dRenderObj構造体に設定しておく。
2. 設定された関数内で、NNS_G3dRSSetCallBack関数を使用してコールバック関数や生起条件を指定します。

具体的には、サンプルcallback5を参照してください。

## 履歴

2004/10/11 初版