반응형

Box2D 3

box2d의 Testbed 유용한 디자인 패턴 정리

글쎄... 이 디자인 패턴은 어떤 이름일까 아직 모릅니다. 공부를 해나가다 보면 언젠간 알게 되겠지만.... 직접 분석을 했기 때문에 나중에 알게 되겠지만, Box2D의 디자인 패턴은 참 유용하다는 생각이 드네요. 이런 유용한 패턴은 언젠가 꼭 필요할 수 있을것 같아서 정리해 둡니다.. 오픈 소스기 때문에 엔진 자체도 무척 가볍고 c++로 이루어진 결과물이기 때문에 객체지향 관점에서 배울점이 많은 소스입니다. 물론 제 입장에서 말입니다. 그래서 TestBed가지고 놀던중 내부 소스를 살펴 봤습니다. 한국에는 Box2D관련 자료가 턱없이 부족하기 때문에 그냥 혼자서 살펴봤습니다. TestBed는 내부를 들여다보면 Test라는 주요 클래스가 있습니다. Test를 상속받은 수많은 클래스가 존재합니다. 아래보시..

cocos2d-x v3.0에서 Box2D사용할 때 리소스 관리 b2Body 객체의 소멸 시점 지정

cocos2d-x v3.0는 스프라이트가 화면 밖으로 나가면 스프라이트의 소멸이 자동적으로 된다. 반면에 Box2d라이브러리를 cocos2d-x에서 쓰게되면 객체가 화면밖으로 나갔을때 스프라이트는 자동적으로 없어지지만 Box2D Body의 경우는 그대로 존재한다. 하나의 레이어에서 오랜 시간 게임을 하게 될 때 이런 객체들이 쌓여 렉을 유발 할 수 있다. 254 366 verts가 336으로 늘었다. 여기서는 debug모드로 Body만 그린다. 모든 Body를 화면 밖으로 밀어냈지만 GL verts의 수는 줄지 않았다. 주기적인 검사로 Body의 위치를 확인하고 화면 밖으로 나가는 경우 Body를 소멸 시켜야 한다. cocos2d-x지만 Box2d의 Testbed에서 사용하는 경우도 기본 소스는 마찬가지..

cocos2d-x 2014.05.19

cocos2d-x v3.0 box2d 디버그모드 사용 소스

3.0으로 바뀐뒤 디버그 모드 사용하는 소스를 정리하였습니다. cpp파일 #include "MyDebug.h" using namespace cocos2d; Scene * MyDebug::createScene() { auto *scene = Scene::create(); auto *layer = MyDebug::create(); scene->addChild(layer); return scene; } bool MyDebug::init() { if (!Layer::init()) { return false; } debugDrawStart(true); this->schedule(schedule_selector(MyDebug::tick)); return true; } //디버그 모드 호출 함수(디버그모드 사용하지 ..

cocos2d-x 2014.05.12
반응형