PhysX

PhysX 4.1 초기세팅 (InitPhysX)

HYuk 2021. 11. 10. 13:45
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