꽃미남 프로그래머 김포프가 창립한 탑 프로그래머 양성 교육 기관 POCU 아카데미 오픈!
절찬리에 수강생 모집 중!
프로그래밍 언어 입문서가 아닌 프로그래밍 기초 개념 입문서
문과생, 비전공자를 위한 프로그래밍 입문책입니다.
jobGuid 꽃미남 프로그래머 "Pope Kim"님의 이론이나 수학에 치우치지 않고 실무에 곧바로 쓸 수 있는 실용적인 셰이더 프로그래밍 입문서 #겁나친절 jobGuid "1판의내용"에 "새로바뀐북미게임업계분위기"와 "비자관련정보", "1판을 기반으로 북미취업에 성공하신 분들의 생생한 경험담"을 담았습니다.
Posted by ozlael

cocos2d-x에 프로파일링 기능이 제공되고 있지만, 기본적으로 배포시에는 비활성화 되어 있지요. 그 사용법에 대한 간단한 팁을 제공해드리고자 해요. 뭐 거창한건 아니구요 원하는 구간의 시작과 끝에 태깅을 하면 그 구간의 호출 수 및 시간등을 보여주는 방식이지요.

일단 기능을 활성화 기키려면 ccConfig.h에 디파인 되어 있는 CC_ENABLE_PROFILERS 를 1로 켜주면 되요. 그리고 사용 시는 원하는 구간에 CC_PROFILER_START("") CC_PROFILER_STOP("")로 달아주면 끝!

그리고 프로파일링 결과를 보고 싶으면 CC_PROFILER_DISPLAY_TIMERS()를 호출해주면 출력창에 결과가 나오지요. 물론 출력창에 찍는것이니 매 프레임 호출하는것은 미친짓이겠지요. (저는 이 함수를 참고해서 화면에 출력되게 개조해서 써요)

근데 한가지 손봐줘야 할 것이 하나 있는데요, CC_ENABLE_PROFILERS를 켜주고 빌드하면 링크 에러가 나지요. CC_PROFILER_START, CC_PROFILER_STOP, CC_PROFILER_DISPLAY_TIMERS 등의 디파인은 CCProfiling.h에 선언되어 있는 전역함수들을 매핑한 것인데, 선언 시 CC_DLL 가 빠져있네요. 혹시 심심해할까봐 이런 소소한 똥방울 심어주는 오픈소스의 센스 ㅎㅎ

다음과 같이 CC_DLL이 빠진 곳은 빈칸 채우기를 해주면 되요.

class CC_DLL CCProfilingTimer : public CCObject

...

extern void CC_DLL CCProfilingBeginTimingBlock(const char *timerName);

extern void CC_DLL CCProfilingEndTimingBlock(const char *timerName);

extern void CC_DLL CCProfilingResetTimingBlock(const char *timerName);

그리고, CCParticleBatchNode.cpp에 있는  CCParticleBatchNode::draw() 메소드에서 프로파일러를 사용하고 있는데,  CC_PROFILER_START로 되야 할 곳에  CC_PROFILER_STOP로 되어 있어요. 이곳도 살포시 수정 해주시고 빠진 include도 추가해주세요. 귀챦지만 어쩔 수가 없네요. 이런게 오픈소스의 잔재미죠;;

디버깅이 잘 안되서 머리 식힐 겸 글을 올리는데 하나도 안식네요. 훗. 롤이나 한판 해야겠어요. 그럼 모두들 즐트롤~

댓글을 달아 주세요