Upload
changhee-lee
View
3.231
Download
6
Embed Size (px)
DESCRIPTION
#kasas
Citation preview
개요• 기존에 있는 엔진을 이용해서 , 모바일용
엔진으로 변신시켜보자 !– DirectX + OpenGL ES–WIN32 + __APPLE__
• 하나의 엔진 코드로 윈도우와 모바일을 모두 처리한다 . (A.K.A 슈퍼클래스 )
• 변신 캐 ~ 삽질기를 소개한다 .
엔진에 OpenGL 통합하기
( 극단적인 다기능 추구 )
간단한 OpenGL ES 구현 Tip
• 어디까지 구현할 것인가 ?– UDK용 모바일 페이지 (Feature 참고 )
• 구현 주의사항– OpenGLES Programming Guide
• Projection Matrix– 오픈지엘 Projection Matrix
• GLSL 문법– glsl quick reference guide
• D3D에 익숙한 개발자을 위한 OpenGLES 개발 소개를 읽어보세요 !
윈도우와 맥 환경 구분• 전처리로 구분–WIN32– __APPLE__
Mac 으로 옮겨보자 !
• Mac 자체가 디스 ~
• 일단 맥하고 친해지는 것이 중요했음 .– 키보드하고 마우스는 보기에만 좋더라 ..– 아직도 친해지지 못했음 . ㅜㅜ
• 모르겠고 , 일단 xcode 를 열어보자 !!!
이제 뭘 하지 ?!..... -_-;;
xcode 로 소스 옮기기• 모르겠다… 도움 요청 !
– 세영님과 찬호님에게 무작정 물어보기 시작 !
– ( 연락이 두절된 차태상군은 저주하겠음 !!!)
• 방법1. 윈도우 기반에서 mac 에서 돌아갈 수 있는 dll 을 만들어서
가지고 오는 방법이 있다고 함2. xcode 에서 프로젝트를 하나 생성해서 , 소스코드를
추가해서 , 라이브러리를 만드는 방법
• 2 번 방법을 선택하기로 함 .. (1 번은 모르겠다 !)
Xcode 에서 라이브러리 만들기• “cocos touch static library” 라는 것으로
빈 라이브러리 프로젝트를 하나 만들었음 .• 빈 프로젝트에 무작정 소스코드를 모두 추가하고 ,
용감하게 빌드 버튼을 눌렀음 !
• 컴파일 에러 22878 개 !!!! 뙇 !• 에러 메시지는 생전 처음 보는 것들… ㅠㅠ
정신차리고 다시 …• 빈 프로젝트에 다른 코드들을 포함하고 있지 않는
독립적인 코드들부터 추가해보기로 함 . (Math, Util, …)
• 조금씩 자신감이 생기면서 , 연관성이 조금씩 큰 코드들을 추가해나가기 시작 !
• 자신감이 완전 붙어서 , Core 클래스들을 붙여보기로 함 (OpenGL ES 관련 )– 컴파일에러 : 16758 개로 증가 !!!
• 근성으로 수정 !!!!• 될 때까지 !!!!!
일단 컴파일은 성공 !!!
• 이제부터 진짜로 디버깅 하면 되요 ~ ㅜㅜ
대체로 이런 문제들…• Stdlib 가 아닌 window 에서 많이 확장된 사용하는 확장 함수들이 전부
에러…– 특히 , unicode 를 사용하면 , 어마어마하다 .– “_” 가 붙어서 시작하는 함수들을 거의 사용이 불가능 .
• _wtoi, _wtof, _wtol, _wfopen, _wsplitpath 등…– _T(), _ASSERT(), _countof() 와 매크로 없음– BYTE, DWORD, BOOL, LONG 선언 없음– Stl 의 인터페이스도 조금 다르다 .– Template 내부에서 사용할 때에는 , typename 으로 type 을 명확히
해주어야 함 .
• #include 순서에 민감하다 .• #include <opengles/opengles.h> -> #include <open-
gles.h> 로…• 매크로 문법이 조금 다르다 .
– #define _WT(A) L#A // __TT( 줸장 ) == L” 줸장”– #deifne _MT(A) L## #A // __TT( 줸장 ) == L” 줸장”
코드 페이지…• 코드에 한글 문자열을 사용했을 때…
– 윈도우에서 UTF-8 로 저장해서 해결 ~– 하지만 , mac 에서는 “ Text Encoding” 을 Korean 으로…
• XCODE 에서 코드를 수정하고 , 소스를 윈도우로 가지고 오면 , 코드페이지가 안 맞아서 한글도 깨지고 , 코드도 다 흐트러짐 !– 파일 형식과 Line Ending 을 윈도우 환경으로 맞춰줘도
안되네 ?– 그런 이유로 visualstudio 에서만 코딩 -> xcode
에서는 컴파일만… gee– ( 해결책에 대한 제보 부탁 !!!)
기타 문제점들• C++ 코드 내에서 objective-C 코드를 사용한다면 ,
파일형식을 “ .objcpp” 로 지정해주어야 한다 .• 외부라이브러리
– Zlib 과 같은 외부라이브러리는 별도의 프로젝트를 만들어서 빌드해서 링크해도 상관이 없다고 하지만 , 대체로 그냥 엔진 프로젝트에 외부라이브러리 코드를 같이 추가해서 빌드해서 사용하는 듯…
• 유니코드 변환– MultiByteToWideChar 를 사용할 수 없으므로 ,
대체함수로 만들어주어야 함 .– Mbstowcs 과 같은 함수나 iconv 를 이용해서 변환을 한다 .
• SetLocal(LC_ALL, “”) 설정 주의• iconv : linux 계열에서 사용
윈도우에서 깨지지 않도록…( 하지만 안돼… ㅜㅜ )
C++ 코드에서 Objective-C 를 사용한다면…
Window에서 작업 .
Mac 에서 확인
음악이나 ...
…ING
• 현재 계속 작업 중…– 아직 추가해야 할 파일이 100 개는 남았다 .
• 여전히 xcode 랑 친해지지 못하고 있음 .– Xcode 를 4.2 로 업데이트 했더니 , 이젠 xcode 도 모르겠다 .. ㅜㅜ ;
• Mac 과 Win 을 오가는 2 대의 작업은 정신적 피로도가 상당히 높다 .– Mac 의 키보드와 마우스를 장시간 사용하니 , 손목이 돌아갈 거 같음 .– 5 시간 정도 작업하면 , 점점 두 PC 간의 자판배열과 마우스 조작에 혼돈이 오기 시작 ! • 노트북 마우스를 쓰담~ 쓰담 하기 시작 !• 한 / 영 전환과 control 위치가 … -_-;;
결론• 이태리 장인의 한 땀 한 땀의 노력이 필요한 작업임
– 별로 추천해주고 싶은 작업이 아니다 !
• 자료를 검색해봐도 , c++ 을 이용한 native 개발에 대한 팁은 별로 없던데 ?!– KLDP.org 에서 리눅스 개발에 대한 팁 참조– Stack Overflow 라는 사이트에서 많이 참조
• 오픈소스프로젝트를 참고하자– Irricht 나 Orge3D 의 경우 , iOS 용으로 이미 포팅이 되어 있음 .– 프로젝트 설정 및 OpenGL ES 처리 등을 참고하면 좋다 .
• 최대한 경험있는 지인들에게 도움을 요청하자 !– Xcode 환경 설정 , mac 에서의 처리에 대한 약간의 팁만 알려줘도 , 많은
삽질을 줄일 수 있다 .
–저 좀 살려주세요 ! ㅜㅜ
참고자료• 전처리 정의하기
– http://jjoong2.tistory.com/entry/xcode-preprocessor-setting
• 매크로 정의 ...– http://stackoverflow.com/questions/26
0125/how-to-use-wide-string-literals-in-c-without-putting-l-in-front-of-each-one
• Static library 만들기– http://gyuha.tistory.com/414
• iconv 라이브러리 ??– http://yongho1037.tistory.com/entry/C-
iconv%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-%EB%AC%B8%EC%9E%90-%EC%9D%B8%EC%BD%94%EB%94%A9-%EB%B0%A9%EC%8B%9D-%EB%B3%80%EA%B2%BD-By-%EC%9A%A9%ED%98%B8
– http://stackoverflow.com/questions/2162390/iconv-encoding-conversion-problem
Q / A