앱을 실행해서 작동하다가, 홈 버튼을 누르거나 전화가 오는 등의 이유로 백그라운드로 전환 되었을 때 다시 앱으로 돌아오고 나서 스프라이트가 검정색으로 나오는 현상이 일어났다.
이 문제는 cocos2d-x 의 예전 버전을 사용할 때는 없었던 현상인데, 2.1.3 으로 업그레이드 한 후에 발생하기 시작했다. 하지만 예전 버전에서도 같은 현상이 일어난다는 얘기도 있다.
void AppDelegate::applicationWillEnterForeground()
{
//CCDirector::sharedDirector()->stopAnimation();
//CCDirector::sharedDirector()->resume();
CCDirector::sharedDirector()->startAnimation();
CocosDenshion::SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
}
Foreground 로 복귀했을 때 AppDelegate 의 applicationWillEnterForeground 메서드는 정상 호출되고, 음악도 플레이가 다시 시작되는 것으로 보아 이쪽의 문제는 아니었다.
위의 주석 부분에 해당 되는 내용을 추가하면 된다는 조언도 있었으나 아무 소용 없었다.
이 현상이 발생한 후로는 LogCat 에 아래와 같은 로그가 남기 시작하는데,
D/cocos2d-x debug info(13584): OpenGL error 0x0502 in /SomeFolder/cocos/x2.1.3/cocos2d-2.1rc0-x-2.1.3/SomeAppName/proj.android/../../cocos2dx/sprite_nodes/CCSprite.cpp draw 589
D/cocos2d-x debug info(13584): OpenGL error 0x0501 in /SomeFolder/cocos/x2.1.3/cocos2d-2.1rc0-x-2.1.3/SomeAppName/proj.android/../../cocos2dx/sprite_nodes/CCSprite.cpp draw 589
D/cocos2d-x debug info(13584): OpenGL error 0x0502 in /SomeFolder/cocos/x2.1.3/cocos2d-2.1rc0-x-2.1.3/SomeAppName/proj.android/../../cocos2dx/sprite_nodes/CCSprite.cpp draw 589
딱 봐도 OpenGL 관련해서 Sprite 처리에 문제가 생겼음을 알 수 있다.
알수는 있다... 해결을 못해서 그렇지...
당연히 cocos2d 엔진 만든 놈들이 해결해야지...?
다행이도, 해결 방법은 있었다.
우선, cocos2dx 의 header 파일 하나를 수정한다.
cocos2dx/platform/CCPlatformMacros.h
[84] #define CC_ENABLE_CACHE_TEXTURE_DATA 1
그리고, 아래 파일의 주석을 제거한다.
/proj.android/jni/hellocpp/main.cpp
void Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit(JNIEnv* env, jobject thiz, jint w, jint h)
{
if (!CCDirector::sharedDirector()->getOpenGLView())
{
CCEGLView *view = CCEGLView::sharedOpenGLView();
view->setFrameSize(w, h);
AppDelegate *pAppDelegate = new AppDelegate();
CCApplication::sharedApplication()->run();
}
else
{
ccDrawInit();
ccGLInvalidateStateCache();
CCShaderCache::sharedShaderCache()->reloadDefaultShaders();
CCTextureCache::reloadAllTextures();
CCNotificationCenter::sharedNotificationCenter()->postNotification(EVNET_COME_TO_FOREGROUND, NULL);
CCDirector::sharedDirector()->setGLDefaultValues();
}
}
코드만 봐도 reloadAllTextures() ... 뭔가 될 것 같은 느낌이 팍 온다 (...)
이걸 해주고 리빌드를 해주면, 정상적으로 작동!
그 동안 홈 버튼 누르고 나갔다가 들어왔을 때 앱이 안되서 정말 짜증났었는데, 이렇게 해결하면 됨.
'개발 > cocos2d' 카테고리의 다른 글
cocos2d-x 3.4 우분투(리눅스) 환경 설정 (0) | 2015.02.08 |
---|---|
build_native.sh 실행시 개행문자 오류 (0) | 2014.02.12 |
이클립스 Unable to execute dex: java.nio.BufferOverflowException (6) | 2013.11.20 |
cocos2dx 에서 build_native.sh clean 실패 (0) | 2013.08.14 |
cocos2d-x 스크립트로 프로젝트 생성 후 빌드 오류 (2) | 2013.01.16 |
굉장히 훌륭한 IDE 인 Visual Studio 에 신기하게도 "새 파일"의 인코딩을 설정하는 옵션이 없다.
2012 버전에는 생겼는지 모르겠는데, 2010 에는 없다.
단순하면서 "당연한" 기능인데 대체 이걸 왜 빼먹은건지 모르겠다.
그렇다고 설정 불가능한 것은 아니다.
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcprojectitems
여기에 가보면, hfile.h 과 newc++file.cpp 이라는 파일이 있는데,
이것을 Notepad++ 같은 에디터로 열어서, UTF-8 로 인코딩을 변환해서 저장하면...
그 후 생성하는 C++ 의 header 파일과 source 은 UTF-8 이 된다.
아, C# 의 경우에는 기본이 UTF-8 이다. 위의 경우에는 VC++ 의 경우에만...
'개발 > 개발툴' 카테고리의 다른 글
안드로이드 스튜디오에서 빌드(gradle) 보안(SSL) 이슈 (0) | 2019.08.08 |
---|---|
이클립스 Kepler 의 JavaSE 1.8 지원 (0) | 2014.05.09 |
이클립스, 비주얼 스튜디오 2010 환경 설정 (3) | 2012.01.14 |
궁극의 프로그래밍 에디터 e TextEditor의 강력한 10가지 기능 소개 (3) | 2010.12.11 |
우분투 이클립스 파이썬 한글 문제 (0) | 2010.04.29 |
여러 장소에서 개발을 해야 할 상황이 좀 생겼다. 각각 개발하는게 아니라 장소를 바꾸더라도 개발하던 것은 그대로 이어서 할 수 있어야 한다는 조건.
이런 상황에 가장 적합한 장비는 당연히 "노트북" 이다.
하지만, 난 몇 주 전에 노트북을 팔아버렸지...;;
게다가 그 노트북이 있었더라도 성능 문제로 개발용으로 사용하기는 무리였고,
성능이 나쁘지 않았더라도 난 노트북이 싫어! -_-
내가 가는 모든 곳에 내 데스크탑이 있었으면 좋겠음. 집, 사무실, 커피숍, 영화관, 편의점... (응?)
어쨌든 기존에 사용하던 데스크탑과 새로 구입한 집에서 사용할 맥미니에 완벽하게 동일한 개발 환경을 셋팅했다. 이렇게 되면 소스 + 각종 리소스가 문제인데, 이것은 SVN 이 깔끔하게 해결해준다. 버전 관리까지 해준다는 점에서 노트북을 들고 다니며 사용하는 것보다도 더 좋은 상황. 조금 더 나아가서 GIT 이나 머큐리얼을 사용하면 더 좋겠지만, 이번 프로젝트에서는 그것까지는 어렵고... SVN 으로도 충분히 만족.
문제는 SVN 에 포함시킬 수 없는 작업 파일들이다. 여러가지 단발성 작업 파일을 SVN 에 올렸다가 지웠다가 하는 것은 전혀 효과적이라 볼 수 없다.
그래서 오랜만에 N드라이브를 다시 사용하기로 결심.
KT Olleh 핸드폰을 사용하고 있어서, 용량면에서 더 유리한 U Cloud 를 사용하는 방법도 있지만, 그렇게 되면 그렇지 않아도 뭉치면 올레 때문에 KT 에 묶여 있는데, 더 노예가 될 것 같아서 깔끔하게 포기하고, 그래도 좀 익숙한 N 드라이브를 설치. 다음 클라우드도 있는데, 맥 환경에서의 지원이 N 드라이브가 낫다는 얘기가 있어서...
소스는 SVN 으로, 기타 파일은 N 드라이브로 사용하니 여러 데스크탑에서 작업하는데 큰 어려움이 없어졌다.
그런데, 사정상 "듀얼 모니터" 를 사용하기가 어려워졌다.
아~ 개발자에게 고성능 CPU, 충분한 램, 빠른 SSD, 기계식 키보드, 예쁜 여자 친구나 아내, 그리고 듀얼 모니터는 정말 필수 중의 필수인데...
그래서, 맥처럼 가상 데스크탑 (VirtuaWin) 을 쓰기로 결심.
듀얼 모니터와는 비교할 수도 없지만, 그래도 데스크탑 1개에 프로그램 100개 실행해 놓는 것보단 나으니까.
윈도우키 + 방향키로 데스크탑 전환을 해보려고 엄청 애썼는데, Windows 7 에서 윈도우 단축키는 전체를 끄거나 켤 수는 있어도 일부를 바꾸는 것은 쉽지 않았다. 결국 CTRL + 윈도우키 + 방향키로 타협. 익숙해지니까 실수가 적다는 점에서 오히려 더 나은것 같기도 함. (그렇지만 가능한 방법을 찾게된다면 바꾸겠지...)
그런데, N드라이브 사용하면 할수록... NAS 를 사용하고 싶어지는군-_-;
'개발' 카테고리의 다른 글
redmine 메일 셋팅 - Exchange Server (2) | 2014.02.07 |
---|---|
안드로이드 : phonton-android, NoClassDefFoundError (0) | 2014.01.06 |
맥미니 2012 설치기 (마운틴 라이언, 그리고 부트캠프) (8) | 2013.05.07 |
맥미니 2012 개조기 (SSD 교체) (13) | 2013.05.06 |
맥미니 2012 구입기 (0) | 2013.05.06 |