初期化と終了処理

初期化 (Init)

int dInitODE2( unsigned int uiInitFlags /*=0*/ );

引数のuiInitFlagsには、dInitODEFlags列挙型の値を指定します。処理が成功した場合にはゼロ以外の値を返します。

enum dInitODEFlags
{
  // dCleanupODEAllDataForThread()関数の呼び出し時に、
  // スレッドのローカルデータが確実に消去されるようにする
  dInitFlagManualThreadCleanup = 0x00000001,
};

dInitODE()

ODE 0.10まではdInitODE()という関数が使用されていましたが、現在ではこれは

dInitODE2( 0 );
dAllocateODEDataForThread( dAllocateMaskAll );

のように実行するのと同じ意味となります。「簡単!実践!ロボットシミュレーション」正誤表 | demura.net:RoboCup・ODE・夢考房

なおdAllocateODEDataForThread()はスレッドの初期化を行う関数です。

終了処理 (Close)

void dCloseODE( void )

オブジェクトの破棄

終了処理をするときにはdCloseODE()を呼び出すより先に、作成したワールドやスペースのオブジェクトを破棄する必要があります。

ボディとジオメトリは、それを格納するワールドとスペースが破棄されたときに自動的に破棄されるため、通常は明示的に破棄する必要はありません。

ジョイントは、それを格納するワールドかジョイント グループが破棄されたときに自動的に破棄されます。よってこれも、明示的に破棄する必要はありません。