MultiThread Simulation

시뮬레이션을 멀티쓰레드로 돌려 본다.
모든 코드를 이해 한다기 보다는 하복 데모의 코드를 그냥 가져와서 사용하는 수준이다.  

< 생성 >
bool InitHavok()

hkGetHardwareInfo로 CPU 갯수를 구해서 hkCpuJobThreadPoolCinfo를 셋팅한다.
hkCpuJobThreadPoolCinfo로 hkCpuJobThreadPool( )를 생성한다.

CPU의 갯수 만큼 hkJobQueue를 만든다.
hkpWorldCinfo의 m_simulationType의 값을 hkpWorldCinfo::SIMULATION_TYPE_MULTITHREADED로 셋팅한다.

hkpWorld::registerWithJobQueue( )에 이전에 생성된 hkJobQueue를 등록한다.

 

< 업데이트 >
void UpdateHavok( hkVector4& pos, hkVector4& t )

멀티쓰레드로 업데이트 할때는 hkpWorld의 stepDeltaTime( ) 대신 stepMultithreaded( )를 사용한다.

< 소멸 >
void UnInitHavok()

사용했던 hkpWorld, hkJobQueue, hkJobThreadPool를 삭제한다.

 

프로젝트 : havok_multithread.zip