728x90
// Foundation을 생성하는데 필요한 변수
PxDefaultAllocator gAllocator;
PxDefaultErrorCallback gErrorCallback;
PxFoundation* m_pFoundation = NULL;
// PxFoundation이 있어야 gPhysics를 생성할 수 있다.
PxPhysics* m_pPhysics = NULL;
// CPU 리소스를 효율적으로 공유할 수 있도록 하기 위해 구현하는 것을 추천
PxDefaultCpuDispatcher* m_pDispatcher = NULL;
// Scene
PxScene* m_pScene = NULL;
// m_pPhysics를 사용해 createMaterial해서 사용
// 충돌체 마찰력, Dynamic 마찰력, 탄성력을 지정하여 사용
PxMaterial* m_pMaterial = NULL;
////Visual Debugger
//PxPvd* gPvd = NULL;
Engine에 PhysX를 초기 세팅 해보려고 한다.
위와 같이 변수를 초기 세팅 해주고,
PhysX를 Initialize 해주는 함수를 다음과 같이 세팅해 보았다.
// Foundation을 만들어 줍니다.
m_pFoundation = PxCreateFoundation(PX_PHYSICS_VERSION, gAllocator, gErrorCallback);
// PhysX를 만들어 줍니다.
m_pPhysics = PxCreatePhysics(PX_PHYSICS_VERSION, *m_pFoundation, PxTolerancesScale(), true);
// Scene을 Set 해줍니다.
PxSceneDesc sceneDesc(m_pPhysics->getTolerancesScale());
sceneDesc.gravity = PxVec3(0.0f, -9.81f, 0.0f); // 중력 세팅
// Dispatcher를 Set 만들어 줍니다.
m_pDispatcher = PxDefaultCpuDispatcherCreate(2);
sceneDesc.cpuDispatcher = m_pDispatcher;
sceneDesc.filterShader = PxDefaultSimulationFilterShader;
// 위에서 설정한대로 Scene을 만들어 줍니다.
m_pScene = m_pPhysics->createScene(sceneDesc);
// Material을 만들어 줍니다.
m_pMaterial = m_pPhysics->createMaterial(0.5f, 0.5f, 0.6f); // 충돌체 마찰력,Dynamic마찰력, 탄성력
// 평지를 만들어 줍니다.
PxRigidStatic* groundPlane = PxCreatePlane(*m_pPhysics, PxPlane(0, 1, 0, 0), *m_pMaterial);
m_pScene->addActor(*groundPlane);
이때 빌드를 돌리면 에러가 뜨게 되는데,
속성에서 추가종속성을 해주어야 한다.
저 상황에서는 현재
PhysX_64.lib
PhysXFoundation_64.lib
PhysXExtensions_static_64.lib
를 추가해주었다.
추가적으로 생기는 에러는
PhysXSDK 코드생성 속성에서 런타임 라이브러리를 바꾸어서 빌드후
그 코드를 들고와서 적용시켜주면 된다.
728x90
'PhysX' 카테고리의 다른 글
PhysX 기본이론 (0) | 2022.04.25 |
---|---|
NvCloth 1.1.6 (4.1 버전과 함께 쓰기위한 버전) (0) | 2022.01.30 |
PhysX 4.1 시작 (3) | 2021.11.01 |