지난 컬럼에서는 아이폰 환경에서 OpenGL ES 2.0을 시작하는 과정을 다뤘다. OpenGL ES 1.1의 고정 함수와 달리 버텍스와 프래그먼트에 대한 쉐이더를 사용하고, OpenGL ES 1.1의 함수나 상수에 붙어 있는 OES 접미사를 사용하지 않는 것이 지난 글의 주요 내용이다. 이번 호에서는 잠시 쉬어가는 의미에서 OpenGL ES 2.0 자체에 대한 본격적인 이야기보다는, 먼저 짚고 넘어가면 좋을 몇 가지 흥미로운 사항들을 소개한다.
■윈도우에서 OpenGL ES 2.0
과감하게 아이폰(그것도 아이폰 OS 3.0에 아이폰 3GS와 아마도 곧 나올 아이팟 터치 3세대 이후)을 학습 환경으로 정했지만, 사실 윈도우에서도 OpenGL ES 2.0을 다룰 수 있다. 먼저 그 필수 환경을 정리하면 다음과 같다.
- 운영체제 : 윈도우비스타/윈도우XP(윈도우7도 무리가 없을 것으로 예상)
- 그래픽카드 : OpenGL 2.0 이상을 지원이면 안전(ATI와 엔비디아 모두 가능)
- 개발 도구 : MS 비주얼 스튜디오 2005나 2008(Express Edition도 가능)
ATI의 OpenGL ES 2.0 에뮬레이터가 엔비디아 그래픽카드에서 문제가 있다는 보고가 있어서 안타까웠는데, 마침 Power VR(아이폰에 채택된 GPU 칩셋 메이커, 정확히는 Imagination Technologies의 한 부서)에서 ATI와 엔비디아 모두 지원하는 SDK를 제공해 다행이다.
Imagination Technologies PowerVR Insider SDK(2009년 8월 21일 현재 버전 2.5 릴리즈 1)는 www.imgtec.com/powervr /insider/sdkdownloads/index.asp에서 받을 수 있으며(회원 가입이 필요하지만 무료), 여러 종류의 SDK 중 Khronos OpenGL ES 2.0 SDK 카테고리의 PC Emulation을 선택하면 된다. 설치 후 설치된 디렉토리 하단의 TrainingCourse로 가면 간단한 예제부터 비주얼 스튜디오 프로젝트로 제공되므로 자신의 비주얼 스튜디오로 열어 소스를 보고 실행해볼 수 있다.
아이폰이 아닌 OpenGL ES 2.0 지원 단말기도 기대할 만하다. 안드로이드가 내년 지원을 예정하고 있고, 윈도우 모바일에서도 가능성이 있다. 삼성과 LG에서도 OpenGL ES 2.0의 지원에 관심이 많아 스마트폰이 아닌 피쳐폰에서도 OpenGL ES 2.0을 누릴 수 있으리라 본다. 참고로 삼성의 제트폰(국내에서는 햅틱 아몰레드)이 지원한다고 하니 SDK가 공개되면 사용할 수 있겠다. 이 코너의 연재 중에 관련 소식이 나오면 계속 전하도록 하겠다.
■타언어 바인딩
이렇게 OpenGL ES 2.0을 누릴 수 있는 개발 환경과 단말기가 점점 늘어남에 따라, OpenGL ES 2.0에 대한 관심도 높아지고 있다. 그런데, 실제 개발에 있어 대두되는 것이 있다. 기본적으로 OpenGL은 C 언어로 작성된 API를 제공하며, 같은 C 계열인 C++나 Objective-C에서의 사용에는 근본적인 제약이 없다.
다른 관점에서 보면, 메모리가 자동 관리되지 않는 unmanaged 영역인 셈이다. 그 대척점에 있는 자바나 C#의 입장에서는 간극이 엄연히 존재하게 되는데, 애플리케이션 개발 언어로 자바를 채택한 안드로이드나 .NET 프레임워크의 관리형 언어(C#과 비주얼 베이직 등)를 지원하는 윈도우 모바일의 경우 그 간극은 문제가 된다.
물론 윈도우 모바일의 경우 C와 C++도 지원하지만 C#의 편리함을 생각한다면(게다가 같은 3D 그래픽 처리를 다루는 XNA 프레임워크가 C#으로 되어 있음을 떠올리면) OpenGL을 C#에서 쉽게 사용하는 데 관심을 가질 만하다. 자바의 경우 그 문제가 일찍부터 부각되어서 OpenGL에 대한 자바 바인딩을 JSR 수준으로 표준화해왔다. 그러면 C#과 자바에서의 OpenGL 접근법을 살펴보자.
■OpenTK
OpenTK(Open Toolkit, http://www.opentk.com/)은 OpenGL, OpenAL, OpenCL의 크로스 플랫폼 래퍼(wrapper)로서 .NET 언어를 지원하는 윈도우, 리눅스, 맥OS에서 사용할 수 있다. 2009년 8월 23일 현재 최신 버전인 0.9.9-1은 OpenGL뿐만 아니라 OpenGL ES (1.0, 1.1, 2.0) 지원이 추가되어 .NET 콤팩트 프레임워크에서의 사용을 열어주기 시작했다. 자세한 내용은 이번 연재의 범위를 넘어가므로, 조만간 OpenTK 1.0과 실제 단말기 실행을 통해 만나보기를 희망한다.
■Java Binding for OpenGL API
앞서 언급했듯이 자바와 OpenGL의 연결은 꽤 오랜 역사를 지니고 있다. 그 시도의 결과물인 JSR 231 Java Binding for OpenGL API는 2003년에 시작해 2006년에 첫 버전을 내고 2008년에 두 번째 수정안을 내놓은 상태이다. 지원 OpenGL API 버전은 2.1까지 올라왔으며, OpenGL의 최신 버전은 3.2이지만 그래픽카드가 지원하는 수준이 보통 2.1이므로 아주 뒤진 것은 아니다.
JSR 231의 JavaME 버전이 바로 JSR 239 Java Binding for OpenGL ES API인데, 2004년에 시작해 2006년에 첫 릴리즈, 그리고 2007년 첫 번째 보완판이 나왔다. JSR 231은 노키아 단말기의 지원이 두드러지는데, OpenGL ES 1.1까지 다루고 있어서 OpenGL ES 2.0을 대상으로 하는 우리로서는 무척 아쉬운 대목이다.
JSR 239는 안드로이드에서도 채택되어 일부 쓰이고 있는데, 안드로이드가 OpenGL ES 2.0을 지원할 것으로 가정한다면 JSR 239도 어떤 식으로든 보완이 필요한 상황이다. 아직 관련 작업이 수면 위로 떠오르지는 않았지만, 안드로이드에서 선을 보이는 대로 이 코너에서 자세히 소개토록 하겠다.
■폭발적인 성장세
그동안 윈도우 플랫폼에 국한된 3D 그래픽 응용(게임 등)이 아이폰을 중심으로 모바일에 확장되면서, 플랫폼 독립적인 OpenGL은 3D 처리의 대안으로 빠르게 부상하고 있다.
특히 모바일 버전인 OpenGL ES의 성장세는 실로 무섭기까지 하다. 다행히 일반 PC에서도 널리 쓰일 수 있는 OpenGL 2.1과 OpenGL ES 2.0은 같은 기반에 있어 기술의 재사용성은 기본적으로 높다. 앞으로의 전개가 흥미진진할 것으로 기대된다.
■게임기와 OpenGL
최근 PSP Minis가 발표되어 PSP에서도 신모델인 PSP Go와 함께 10월 1일부터 앱스토어가 열리게 된다. 아직 PSP Minis를 개발자로서 참여하는 것에 대해 많이 공개된 것은 아니지만, 소니가 플레이스테이션으로 그동안 보여준 (닌텐도에 비해 상대적으로) 개방적이고 써드파티 친화적인 자세는 우리를 충분히 기대하게 만든다.
애플의 아이폰과 MS의 XNA(Xbox 360)의 경우 SDK는 무료지만 등록비가 연간 드는 반면, 보통 게임기의 SDK는 그 가격이 계속 떨어지곤 있지만 무척 고가이다. PSP의 경우 많이 저렴해져서 1,200 유로(한화로 약 220만원)라고 하니 말이다. 물론 아이폰의 경우 맥이 필요하므로 더 든다고 할 수도 있다. 그렇게 보면 XNA는 윈도우 PC에 Xbox 360만 있으면 되므로 가장 저렴한 상황일 수 있지만, 안타깝게도 한국 개발자에게는 열려 있지 않다.
한편, PSP Minis와 같이 DLC(Downloadable Content) 마켓을 닌텐도도 적극적으로 펼치고는 있지만, 문제는 SDK와 개발자 등록이 공개적이고 쉽지 않다. 닌텐도는 아타리 쇼크를 반면교사삼아 강력한 써드파티 관리를 하는 것으로 유명한데, 아이폰의 성공을 보고도 얼마나 그 전략을 고수할지는 지켜볼 일이다.
현재 가정용 게임기인 PS3, Wii, Xbox 360, 그리고 휴대용 게임기인 PSP와 NDS 중에서 공식 SDK가 전면 공개된 것은 Xbox 360 하나뿐인 건만 봐도 게임기 쪽의 생태계는 많이 닫혀 있음을 알 수 있다. PSP Minis의 경우 개발자 등록을 시작한 모양인데, 잠깐 들어가보니 게임 개발 제안서를 올려야 하는 것으로 보아 소니측의 심사가 아주 없지는 않을 듯하다.
어떻게 보면 이정도의 써드파티 관리는 필요하다고 할 수도 있겠지만, 품질이 사용자에 의해 자연스럽게 확보되는 오늘날의 인텃넷 사용자 등급(User rating) 시대에 아이폰 앱스토어가 보여준 성과는 시사하는 바가 크다.
OpenGL의 관점에서 바라보면, MS를 제외한 소니와 닌텐도는 OpenGL이 어느 정도 가까운 거리를 유지하고 있다. PS3는 공식적으로 OpenGL ES를 지원하고 있고, 닌텐도 DS의 경우 일반에 공개된 자료는 없지만 OpenGL ES를 채택하고 있다고 한다. 특히 NDS는 홈브루(닌텐도가 공식적으로 배포하는 것은 아니지만 개인 개발자들이 취미로 하는 수준의) SDK가 아주 잘 마련되어 있어 흥미있는 사람들은 devkitpro를 검색해보길 바란다.
관련기사
- [이창신]실전 아이폰게임 개발32009.08.30
- 월드 랠리서 만난 현대차 vs 토요타…"여기선 빠른 제조사가 1위"2024.11.22
- "피부 컨설팅 받고 VIP라운지 즐겨요"…체험 가득 '올리브영N 성수' 가보니2024.11.21
- 9장 사진에 담아본 '디즈니 쇼케이스 2024' 이모저모2024.11.22
[필자소개]
이창신 iasandcb@gmail.com, http://ias.myid. net|현재 모바일 애플리케이션 개발에 몰두하고 있다.