SlideShare ist ein Scribd-Unternehmen logo
1 von 23
iOS로 포팅해보기
이창희 (cagetu@softnette.com)
    #kasastudy(2012.03.07)
개요
• 기존에 있는 엔진을 이용해서, 모바일용 엔
  진으로 변신시켜보자!
 – 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 <opengles.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를 사용한다면…




    윈도우에서 깨지지 않도록…
      (하지만 안돼… ㅜㅜ)
Mac에서
       확인




              음악이
               나...


Window에서
   작업.
…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/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
Q/A

Weitere ähnliche Inhalte

Ähnlich wie 아이폰에 포팅해보기

이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013devCAT Studio, NEXON
 
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템Young Soo Kim
 
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)Dong Chan Shin
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템강 민우
 
임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011devCAT Studio, NEXON
 
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍NDOORS
 
develop android app using intellij
develop android app using intellijdevelop android app using intellij
develop android app using intellijSewon Ann
 
[NDC17] Protocol:hyperspace Diver 개발 포스트모템
[NDC17] Protocol:hyperspace Diver 개발 포스트모템[NDC17] Protocol:hyperspace Diver 개발 포스트모템
[NDC17] Protocol:hyperspace Diver 개발 포스트모템Young Soo Kim
 
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기) FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기) YoungSu Son
 
요람(CreateProcess)에서 무덤(ResumeThread)까지
요람(CreateProcess)에서 무덤(ResumeThread)까지요람(CreateProcess)에서 무덤(ResumeThread)까지
요람(CreateProcess)에서 무덤(ResumeThread)까지Hyoje Jo
 
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)Jaewon Choi
 
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017devCAT Studio, NEXON
 
CoreDot TechSeminar 2018 - Session1 Park Jihun
CoreDot TechSeminar 2018 - Session1 Park JihunCoreDot TechSeminar 2018 - Session1 Park Jihun
CoreDot TechSeminar 2018 - Session1 Park JihunCore.Today
 
클로져 소개 강의 (한국정보통신산업노동조합)
클로져 소개 강의 (한국정보통신산업노동조합)클로져 소개 강의 (한국정보통신산업노동조합)
클로져 소개 강의 (한국정보통신산업노동조합)Sang-Kyu Park
 
LinqPad for DevOps
LinqPad for DevOpsLinqPad for DevOps
LinqPad for DevOps성수 이
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자Sewon Ann
 
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁Yi-kwon Hwang
 
유니티로 해보는 게임 프로토타이핑
유니티로 해보는 게임 프로토타이핑유니티로 해보는 게임 프로토타이핑
유니티로 해보는 게임 프로토타이핑Kiyoung Moon
 
131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원NAVER D2
 
CUDA 프로그래밍 기초 MODUCON2018
CUDA 프로그래밍 기초 MODUCON2018CUDA 프로그래밍 기초 MODUCON2018
CUDA 프로그래밍 기초 MODUCON2018Shengzhe Li
 

Ähnlich wie 아이폰에 포팅해보기 (20)

이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
 
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
 
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
 
임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011
 
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
 
develop android app using intellij
develop android app using intellijdevelop android app using intellij
develop android app using intellij
 
[NDC17] Protocol:hyperspace Diver 개발 포스트모템
[NDC17] Protocol:hyperspace Diver 개발 포스트모템[NDC17] Protocol:hyperspace Diver 개발 포스트모템
[NDC17] Protocol:hyperspace Diver 개발 포스트모템
 
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기) FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
 
요람(CreateProcess)에서 무덤(ResumeThread)까지
요람(CreateProcess)에서 무덤(ResumeThread)까지요람(CreateProcess)에서 무덤(ResumeThread)까지
요람(CreateProcess)에서 무덤(ResumeThread)까지
 
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)
 
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
 
CoreDot TechSeminar 2018 - Session1 Park Jihun
CoreDot TechSeminar 2018 - Session1 Park JihunCoreDot TechSeminar 2018 - Session1 Park Jihun
CoreDot TechSeminar 2018 - Session1 Park Jihun
 
클로져 소개 강의 (한국정보통신산업노동조합)
클로져 소개 강의 (한국정보통신산업노동조합)클로져 소개 강의 (한국정보통신산업노동조합)
클로져 소개 강의 (한국정보통신산업노동조합)
 
LinqPad for DevOps
LinqPad for DevOpsLinqPad for DevOps
LinqPad for DevOps
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자
 
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
 
유니티로 해보는 게임 프로토타이핑
유니티로 해보는 게임 프로토타이핑유니티로 해보는 게임 프로토타이핑
유니티로 해보는 게임 프로토타이핑
 
131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원
 
CUDA 프로그래밍 기초 MODUCON2018
CUDA 프로그래밍 기초 MODUCON2018CUDA 프로그래밍 기초 MODUCON2018
CUDA 프로그래밍 기초 MODUCON2018
 

Mehr von changehee lee

Gdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_glGdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_glchangehee lee
 
Smedberg niklas bringing_aaa_graphics
Smedberg niklas bringing_aaa_graphicsSmedberg niklas bringing_aaa_graphics
Smedberg niklas bringing_aaa_graphicschangehee lee
 
Fortugno nick design_and_monetization
Fortugno nick design_and_monetizationFortugno nick design_and_monetization
Fortugno nick design_and_monetizationchangehee lee
 
[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기changehee lee
 
모바일 엔진 개발기
모바일 엔진 개발기모바일 엔진 개발기
모바일 엔진 개발기changehee lee
 
Mobile crossplatformchallenges siggraph
Mobile crossplatformchallenges siggraphMobile crossplatformchallenges siggraph
Mobile crossplatformchallenges siggraphchangehee lee
 
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)changehee lee
 
개발자여! 스터디를 하자!
개발자여! 스터디를 하자!개발자여! 스터디를 하자!
개발자여! 스터디를 하자!changehee lee
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희changehee lee
 
Gamificated game developing
Gamificated game developingGamificated game developing
Gamificated game developingchangehee lee
 
Windows to reality getting the most out of direct3 d 10 graphics in your games
Windows to reality   getting the most out of direct3 d 10 graphics in your gamesWindows to reality   getting the most out of direct3 d 10 graphics in your games
Windows to reality getting the most out of direct3 d 10 graphics in your gameschangehee lee
 
Basic ofreflectance kor
Basic ofreflectance korBasic ofreflectance kor
Basic ofreflectance korchangehee lee
 
Valve handbook low_res
Valve handbook low_resValve handbook low_res
Valve handbook low_reschangehee lee
 

Mehr von changehee lee (20)

Visual shock vol.2
Visual shock   vol.2Visual shock   vol.2
Visual shock vol.2
 
Shader compilation
Shader compilationShader compilation
Shader compilation
 
Gdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_glGdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_gl
 
Smedberg niklas bringing_aaa_graphics
Smedberg niklas bringing_aaa_graphicsSmedberg niklas bringing_aaa_graphics
Smedberg niklas bringing_aaa_graphics
 
Fortugno nick design_and_monetization
Fortugno nick design_and_monetizationFortugno nick design_and_monetization
Fortugno nick design_and_monetization
 
카툰 렌더링
카툰 렌더링카툰 렌더링
카툰 렌더링
 
[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기
 
Paper games 2013
Paper games 2013Paper games 2013
Paper games 2013
 
모바일 엔진 개발기
모바일 엔진 개발기모바일 엔진 개발기
모바일 엔진 개발기
 
V8
V8V8
V8
 
Wecanmakeengine
WecanmakeengineWecanmakeengine
Wecanmakeengine
 
Mobile crossplatformchallenges siggraph
Mobile crossplatformchallenges siggraphMobile crossplatformchallenges siggraph
Mobile crossplatformchallenges siggraph
 
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
 
개발자여! 스터디를 하자!
개발자여! 스터디를 하자!개발자여! 스터디를 하자!
개발자여! 스터디를 하자!
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희
 
Light prepass
Light prepassLight prepass
Light prepass
 
Gamificated game developing
Gamificated game developingGamificated game developing
Gamificated game developing
 
Windows to reality getting the most out of direct3 d 10 graphics in your games
Windows to reality   getting the most out of direct3 d 10 graphics in your gamesWindows to reality   getting the most out of direct3 d 10 graphics in your games
Windows to reality getting the most out of direct3 d 10 graphics in your games
 
Basic ofreflectance kor
Basic ofreflectance korBasic ofreflectance kor
Basic ofreflectance kor
 
Valve handbook low_res
Valve handbook low_resValve handbook low_res
Valve handbook low_res
 

아이폰에 포팅해보기

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