메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

편집자/저자토크

3차원 입체 그래픽을 손 안에

한빛미디어

|

2010-11-15

|

by HANBIT

14,735

iPhone 3D Programming(아이폰 3D프로그래밍): using OpenGL ES』 역자 강권학

최근에 아이폰과 같은 휴대용 기기에서 현실감 넘치는 3차원 레이싱 게임 등을 어렵지 않게 찾아 볼 수 있다. 근래의 휴대폰 프로세서를 보면 ARM 코어를 채택하고 GHz 대의 클럭을 사용하는 것도 적지 않게 볼 수 있다. 이런 게임이 가능해진 것은 기기의 CPU 성능이 높아진 때문일 수도 있지만, 본질적으로는 3차원 그래픽 가속칩을 사용하고 있기 때문이다.

그림1

먼저 3차원 그래픽스를 구현하는 과정을 간략히 살펴보자. 기본적으로 가상 공간에서의 정점을 기준으로, 정점 간에 연결하여 선과 삼각형을 구성하게 된다. 자동차, 건물 등 다양한 3차원 공간 상의 객체들을 표현하기 위해서는, 정밀도에 따라서 수백 내지 수만 개의 삼각형이 필요할 수도 있다. 이 삼각형의 면에 색상을 적용하고, 조명을 적용하여, 결국은 화면의 각 픽셀의 색상을 결정하게 된다. 이런 과정은 비교적 복잡하지 않은 식을 수많은 데이터에 적용하는 과정이 된다.

그림2
그래픽 파이프 라인

CPU는 범용 프로세서로서 이런 연산을 할 수 있지만, 많은 데이터에 동일한 간단한 연산을 적용할 수 있는 구조를 갖춘 프로세서가 이런 일을 더욱 잘 할 수 있다. 우리가 흔히 말하는 3차원 그래픽 가속기는 바로 이런 연산을 수행하는 프로세서이다. 간단한 수식을 수 많은 데이터에 동시에 적용하는 것이다. 이렇게 전용 그래픽 프로세서가 CPU로 부터 계산의 부담을 덜어 주는 것을 오프로딩(Off-loading)이라고 하며, 덕분에 CPU는 다른 연산에 집중할 수 있게 된다.

iPhone 3D Programming(아이폰 3D프로그래밍): using OpenGL ES 이런 특성에 맞게 3차원 가속 기능이 있는 그래픽스 카드는 10여년전까지만 해도 수퍼컴퓨터에서나 볼 수 있었던 병렬처리 구조를 갖고 있으며, 고성능 연산에 따라서 높은 발열 때문에 대부분 자체적인 냉각 시스템을 갖고 있을 정도이다. 그러면 이런 3차원 가속기의 성능은 어느 정도 될까? GPU의 특성상 범용 CPU와 직접적인 비교는 불가능하지만, 수치 연산에 있어서는 수십 배에서 100배 가량의 연산 능력이 뛰어나다고 볼 수 있다. 이 것은 최근 몇 달 동안 인텔과 엔비디아 간의 많은 논란이 있은 후, 지난 6월 국제 컴퓨터 구조 심포지엄(International Symposium on Computer Architecture)에 발표한 논문에서 "애플리케이션 커널을 돌리는데, GPU는 CPU보다 100배가 아니라 단지 16배까지만 빠르다"고 했던 해프닝이 있었다.

그림3
인개짓 삽화

이런 하드웨어의 3차원 가속 기능을 응용 프로그램에서 사용하기 위해서는 적절한 API가 제공되어야 한다. 현재 널리 쓰이는 것으로는 DirectX와 OpenGL이 있다. DirectX는 마이크로소프트사의 표준으로서 윈도우 플랫폼에 제약되는 반면 OpenGL은 윈도우를 포함한 여러 운영체제에서도 사용가능한 공개 표준이다.

그리고 휴대용 기기의 고성능화에 따라서, OpenGL 표준을 제정하고 있는 크로노스(Khronos) 그룹은 2003년도에 휴대용 기기를 위한 OpenGL의 축소변형인 OpenGL ES를 발표하게 되었으며, 2007년도 3월에는 OpenGL ES 2.0을 발표하였다. 아이폰 3GS는 OpenGL ES 1.1과 2.0을 모두 지원하며, 이 표준 API를 통하여 개발된 애플리케이션은 같은 표준을 지원하는 안드로이드, 소니 PSP 등 다른 플랫폼에 이식하기도 그만큼 쉽다. 아이폰 3D 프로그래밍은 아이폰을 대상으로 예제 프로젝트를 수행하지만, 운영체제에 독립적이고 이식이 쉬운 구조로 개발하는 방법을 설명하여, 이 책을 통해서 익힌 예제를 다른 플랫폼에도 쉽게 이식할 수 있도록 한다. 또한 "아이폰 3D 프로그래밍"은 아이폰의 카메라 및 다양한 센서를 이용하여 증강현실 애플리케이션 예제까지도 도전한다.

그림4

OpenGL ES는 OpenGL의 축소 버전으로 기능의 제약이 있지만, 그만큼 더 배우기도 쉽다. 그동안 어려운 수학과 복잡한 OpenGL API로 3차원 그래픽스 프로그래밍의 높은 장벽을 느꼈던 독자들이라면 이 책에서 설명하는 예제를 차근차근 따라가면서 또한 직접 코드를 변경해보면서 구체적인 그래픽스 프로그래밍의 세계를 경험할 수 있을 것이라 생각한다.
TAG :
댓글 입력
자료실