아이폰에 포팅해보기

3,757 views
3,540 views

Published on

#kasas

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,757
On SlideShare
0
From Embeds
0
Number of Embeds
870
Actions
Shares
0
Downloads
19
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

아이폰에 포팅해보기

  1. 1. iOS로 포팅해보기이창희 (cagetu@softnette.com) #kasastudy(2012.03.07)
  2. 2. 개요• 기존에 있는 엔진을 이용해서, 모바일용 엔 진으로 변신시켜보자! – DirectX + OpenGL ES – WIN32 + __APPLE__• 하나의 엔진 코드로 윈도우와 모바일을 모 두 처리한다. (A.K.A 슈퍼클래스)• 변신 캐~ 삽질기를 소개한다.
  3. 3. 엔진에 OpenGL 통합하기 (극단적인 다기능 추구)
  4. 4. 간단한 OpenGL ES 구현 Tip• 어디까지 구현할 것인가? – UDK용 모바일 페이지 (Feature 참고)• 구현 주의사항 – OpenGLES Programming Guide• Projection Matrix – 오픈지엘 Projection Matrix• GLSL문법 – glsl quick reference guide• D3D에 익숙한 개발자을 위한 OpenGLES 개발 소 개를 읽어보세요!
  5. 5. 윈도우와 맥 환경 구분 • 전처리로 구분 – WIN32 – __APPLE__
  6. 6. Mac으로 옮겨보자!• Mac 자체가 디스~• 일단 맥하고 친해지는 것이 중요했음. – 키보드하고 마우스는 보기에만 좋더라.. – 아직도 친해지지 못했음. ㅜㅜ• 모르겠고, 일단 xcode를 열어보자!!!
  7. 7. 이제 뭘 하지?!..... -_-;;
  8. 8. xcode로 소스 옮기기• 모르겠다… 도움 요청! – 세영님과 찬호님에게 무작정 물어보기 시작! – (연락이 두절된 차태상군은 저주하겠음!!!)• 방법 1. 윈도우 기반에서 mac에서 돌아갈 수 있는 dll을 만들 어서 가지고 오는 방법이 있다고 함 2. xcode에서 프로젝트를 하나 생성해서, 소스코드를 추가해서, 라이브러리를 만드는 방법• 2번 방법을 선택하기로 함.. (1번은 모르겠다!)
  9. 9. Xcode에서 라이브러리 만들기• “cocos touch static library”라는 것으로 빈 라이브러리 프로젝트를 하나 만들었음.• 빈 프로젝트에 무작정 소스코드를 모두 추 가하고, 용감하게 빌드 버튼을 눌렀음!• 컴파일 에러 22878개!!!! 뙇!• 에러 메시지는 생전 처음 보는 것들… ㅠㅠ
  10. 10. 정신차리고 다시 …• 빈 프로젝트에 다른 코드들을 포함하고 있지 않는 독립적인 코드들부터 추가해보기로 함. (Math, Util, …)• 조금씩 자신감이 생기면서, 연관성이 조금씩 큰 코드들을 추가해나가기 시작!• 자신감이 완전 붙어서, Core 클래스들을 붙여 보기로 함 (OpenGL ES 관련) – 컴파일에러 : 16758개로 증가!!!• 근성으로 수정!!!!• 될 때까지!!!!!
  11. 11. 일단 컴파일은 성공!!! • 이제부터 진짜로 디버 깅 하면 되요~ ㅜㅜ
  12. 12. 대체로 이런 문제들…• 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 <opengles.h>로 …• 매크로 문법이 조금 다르다. – #define _WT(A) L#A // __TT(줸장) == L”줸장” – #deifne _MT(A) L## #A // __TT(줸장) == L”줸장”
  13. 13. 코드 페이지…• 코드에 한글 문자열을 사용했을 때… – 윈도우에서 UTF-8로 저장해서 해결~ – 하지만, mac에서는 “Text Encoding”을 Korean으로…• XCODE에서 코드를 수정하고, 소스를 윈도우로 가 지고 오면, 코드페이지가 안 맞아서 한글도 깨지 고, 코드도 다 흐트러짐! – 파일 형식과 Line Ending을 윈도우 환경으로 맞춰줘도 안되네? – 그런 이유로 visualstudio에서만 코딩 -> xcode에서 는 컴파일만…gee – (해결책에 대한 제보 부탁!!!)
  14. 14. 기타 문제점들• C++코드 내에서 objective-C 코드를 사용한다 면, 파일형식을 “.objcpp”로 지정해주어야 한다.• 외부라이브러리 – Zlib과 같은 외부라이브러리는 별도의 프로젝트를 만 들어서 빌드해서 링크해도 상관이 없다고 하지만, 대체 로 그냥 엔진 프로젝트에 외부라이브러리 코드를 같이 추가해서 빌드해서 사용하는 듯…• 유니코드 변환 – MultiByteToWideChar 를 사용할 수 없으므로, 대체함 수로 만들어주어야 함. – Mbstowcs 과 같은 함수나 iconv를 이용해서 변환을 한 다. • SetLocal(LC_ALL, “”) 설정 주의 • iconv : linux 계열에서 사용
  15. 15. C++코드에서 Objective-C를 사용한다면… 윈도우에서 깨지지 않도록… (하지만 안돼… ㅜㅜ)
  16. 16. Mac에서 확인 음악이 나...Window에서 작업.
  17. 17. …ING• 현재 계속 작업 중… – 아직 추가해야 할 파일이 100개는 남았다.• 여전히 xcode 랑 친해지지 못하고 있음. – Xcode를 4.2로 업데이트 했더니, 이젠 xcode도 모르겠다.. ㅜㅜ;• Mac과 Win을 오가는 2대의 작업은 정신적 피로도가 상당히 높 다. – Mac의 키보드와 마우스를 장시간 사용하니, 손목이 돌아갈 거 같 음. – 5시간 정도 작업하면, 점점 두 PC간의 자판배열과 마우스 조작에 혼돈이 오기 시작! • 노트북 마우스를 쓰담~ 쓰담 하기 시작! • 한/영 전환과 control 위치가 … -_-;;
  18. 18. 결론• 이태리 장인의 한 땀 한 땀의 노력이 필요한 작업임 – 별로 추천해주고 싶은 작업이 아니다!• 자료를 검색해봐도, c++을 이용한 native 개발에 대한 팁은 별 로 없던데?! – KLDP.org 에서 리눅스 개발에 대한 팁 참조 – Stack Overflow 라는 사이트에서 많이 참조• 오픈소스프로젝트를 참고하자 – Irricht 나 Orge3D의 경우, iOS 용으로 이미 포팅이 되어 있음. – 프로젝트 설정 및 OpenGL ES 처리 등을 참고하면 좋다.• 최대한 경험있는 지인들에게 도움을 요청하자! – Xcode 환경 설정, mac에서의 처리에 대한 약간의 팁만 알려줘 도, 많은 삽질을 줄일 수 있다. –저 좀 살려주세요! ㅜㅜ
  19. 19. 참고자료• 전처리 정의하기 – http://jjoong2.tistory.com/entry/xcode-preprocessor-setting• 매크로 정의... – http://stackoverflow.com/questions/260125/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
  20. 20. Q/A

×