Top

OpenGL ES를 활용한 iOS 3D 프로그래밍

  • 원서명Learning OpenGL ES for iOS: A Hands-on Guide to Modern 3D Graphics Programming (ISBN 9780321741837)
  • 지은이에릭 벅
  • 옮긴이황진호
  • ISBN : 9788960775503
  • 35,000원
  • 2014년 04월 30일 펴냄 (절판)
  • 페이퍼백 | 428쪽 | 188*235mm
  • 시리즈 : 모바일 프로그래밍

판매처

  • 현재 이 도서는 구매할 수 없습니다.

책 소개

요약

이 책은 OpenGL ES의 기본적인 원리와 예제를 iOS에 적용하는 방법과 그래픽 프로그래밍의 개념을 설명함으로써 전체적인 이해의 기틀을 제공한다. 더 나아가 낮은 수준의 비트 조작부터 고급 주제까지 그래픽 기술에 대해 설명한다. 이 책은 직접 OpenGL ES 프로그래밍이 가능한 수준까지 끌어 올리는 것을 목표로 삼아 단계별로 책의 내용을 구성했다. 그리고 책을 통해 단시간에 OpenGL ES의 코딩과 더불어 디버깅이 가능하게 하며, 독자적으로 고급 주제를 공부할 수 있는 기반 지식을 갖도록 도와준다. 또한 OpenGL ES의 3.0 버전을 간략히 소개하는 부록도 추가했다.

이 책에서 다루는 내용

■ 핵심 OpenGL ES 컴퓨터 그래픽 개념과 iOS 그래픽 구조 이해하기
■ 강력한 애플 플랫폼 기능을 이용하기 위해 코코아 터치와 OpenGL ES를 통합하기
■ 투명도, 색 혼합, 다중 질감, 압축 등 질감을 처음부터 끝까지 만들어 보기
■ 주변 빛, 분산 빛, 반사 빛 만들기
■ 모든 시각에서 3D 기하적인 객체를 렌더하기 위해 변형 사용하기
■ 앱 논리를 통해서 시간을 조절함으로써 상황 애니메이션하기
■ 경사진 지형을 가진 광활한 야외 장면을 연출하기 위해 데이터 나누기
■ 3D 기하로 사용자 상호작용 검출하고 처리하기
■ 고급 관람석에서 소립자와 광고에 이르기까지 특수 효과 구현하기
■ 그래픽 성능 시스템적으로 최적화하기
■ 컴퓨터 그래픽에 사용된 필수 선형대수 이해하기
■ 배운 모든 내용을 통합한 완전한 시뮬레이션을 디자인하고 구축하기

이 책의 대상 독자

이 책은 프로그래밍을 배우는 학생과 프로그래밍 분야에 이미 경력이 많은 전문 프로그래머, 그리고 그래픽을 배우길 원하는 모든 이들을 독자대상으로 한다. 컴퓨터 그래픽에 대한 경험은 없어도 무관하지만, C나 C++ 등의 객체 지향 프로그래밍 언어에 친숙할 필요는 있다. iOS, 오브젝티브C 프로그래밍 언어, 코코아 터치(Cocoa Touch) 프레임워크에 대한 이전 경험은 도움이 되지만, 필수는 아니다. 이 책을 정독한 이후에는 고급 컴퓨터 그래픽 기술을 iOS 앱에 적용할 준비가 돼 있을 것이다.

이 책의 구성

1장, 현대적인 모바일 그래픽 하드웨어 사용하기: 임베디드 그래픽 하드웨어를 이용해 3차원(3D) 그래픽을 그리는 현대적인 방법을 소개한다.

2장, 하드웨어 제대로 동작시키기: iOS 앱 내에서 OpenGL ES 그래픽을 설정하고, 사용하는 방법을 설명한다.

3장, 텍스처: 텍스처링에 깔려 있는 개념을 소개하고, 공통적으로 사용되는 방법을 기술한다.

4장, 빛 비추기: 3D 물체로 빛의 상호 작용을 시뮬레이션하는 여러 가지 기술을 소개한다.

5장, 관점 전환하기: 모든 관점에서 기하 모형 물체를 렌더링하는 방법을 설명하고 보여준다.

6장, 애니메이션: UtilityModel 클래스와 UtilityMesh 클래스와의 관계를 소개한다.

7장, 모델 불러와서 사용하기: 6장에서 다룬 범퍼카, 울타리, 캔 모양의 라이트 등의 이펙트보다 더욱 정교한 모델을 살펴본다.

8장, 특수 효과: 처리되는 정점의 수를 극단적으로 증가하지 않고 3D 앱에 구체성을 더하는 세 가지 기술에 대해서 소개한다.

9장, 최적화: iOS 장치를 위한 OpenGL ES 2.0 렌더링 성능을 개선하기 위한 최적화 전략을 알아본다.

10장, 지형과 피킹: 9장까지 소개된 여러 가지 3D 그래픽 개념과 예제 클래스를 재사용해 경사진 지형을 갖는 넓은 야외 장면을 그리는 메소드를 공부한다.

11장, 수학 커닝 페이퍼: 지금까지 조금씩 소개된 선형 대수 개념을 다시 살펴보고, 핵심 개념, 중요한 공식, 언제 사용해야 하는지 설명한다.

12장, 정리하기: 간단한 시뮬레이션의 디자인과 구성을 나타내는 OpenGLESCh121을 설명한다.

한국어판 특별부록: OpenGL ES 3.0 소개

저자/역자 소개

저자 서문

OpenGL ES 기술은 애플의 iOS 장치인 아이폰, 아이팟 터치, 아이패드에 의해 보여지는 사용자 인터페이스와 그래픽 기능의 근간을 이룬다. ‘ES’는 임베디드 시스템(Embedded Systems)의 약자이며, 이와 동일한 기술은 비디오 게임 콘솔과 항공기 조종실의 계기판뿐만 아니라 거의 모든 제조사의 방대한 셀 폰에도 적용된다. OpenGL ES는 데스크탑 운영체제에서 사용되는 OpenGL 버전의 하위 집합이다. 결과적으로 OpenGL ES 앱은 많은 경우 데스크탑 시스템에도 적응할 수 있다.

이 책은 현대적인 그래픽 프로그래밍에 대해서 소개하고, iOS 장치에 OpenGL ES의 효과적인 사용에 대해서 간결하게 설명한다. 여러 가지 예제 프로그램이 그래픽 프로그래밍 개념을 설정한다. 저자의 웹사이트(http://www.cosmicthump.com/books/)에서는 예제 코드를 제공하고, 출판 이후에 발견된 오류를 게시한다. 이 책에서는 가장 낮은 수준의 비트 조작부터 고급 주제까지 그래픽 기술에 대해서 설명한다.

그래픽 프로그래밍을 배우는 데 가장 큰 도전은 잘못된 정보와 인터넷에 넘쳐나는 오래되고 좋지 못한 예제들을 구분하는 것이다. OpenGL은 1992년에 최첨단의 그래픽 워크스테이션을 위한 작은 소프트웨어 라이브러리로 시작했다. 그래픽 하드웨어는 엄청나게 발전했고, OpenGL이 최초로 나왔을 때 돈으로 살 수 있었던 장치보다 현재 모바일 장치의 성능이 더 뛰어나다. 하드웨어가 발전될수록 OpenGL의 디자이너에 의한 타협과 가정들은 모두 관련성을 잃어버린다. 적어도 12가지 OpenGL 표준이 존재하고, 현대적인 OpenGL ES는 이전 버전에서는 흔했던 많은 기술들에 대한 지원을 생략한다. 유감스럽게도 더 이상 쓸모 없는 코드, 최적화 되지 않은 접근법, 시대착오적인 방법은 아직까지 구글의 검색 결과에 많이 포함돼 있다. 이 책은 현대적이고 효율적인 방법에 집중하는 반면, 관련성이 떨어지거나 쓸모 없게 된 방법은 다루지 않을 것이다

저자 소개

에릭 벅(Erik M. Buck)

여러 스타트업을 창업한 기업가이자 저자다. 2003년에 『코코아 프로그래밍』과 2009년에는 『코코아 디자인 패턴』을 공저했다. 1993년 첫 회사 EMB & Associates를 설립해 항공 분야와 엔터테인먼트 소프트웨어 산업의 강자로 만들었다. 건설업에도 종사한 적이 있고, 고등학교에서 과학을 가르치기도 했으며, 캔버스 유화를 그려 전시회를 열거나, 대체 연료 자동차를 개발하기도 했다. 2002년에 기업을 매각한 후에 cosmicthump.com 스타트업 창업 등 여러 가지 관심 분야를 추구하고 있다. 라이트 주립대학교(Wright State University)에서 전산학과 겸임교수로 iOS 프로그래밍 수업을 가르치고 있다. 1991년에 데이튼(Dayton) 대학에서 전산학과 학사를 받았다.

옮긴이의 말

지금은 디자인의 시대다. 기본 기능들이 평준화되고, 무엇을 보여주느냐가 가장 중요한 시대가 됐다. 2차원을 넘어 3차원의 렌더링으로 사용자의 눈을 현혹한다. 게임, 가상 현실, 인터넷 마켓, 광고 등 너나 할 것 없이 3차원의 그래픽을 앱에 구동하기 위해 노력 중이다. 제품을 360도로 살펴보는 시대는 이미 옛날 얘기가 됐다. 이제는 이것을 뛰어넘는 기술을 향해 달려가고 있다. 예를 들어, 예전에 음악을 그래픽으로 렌더링하기 위해서 여러 개의 막대를 사용하여, 길이를 늘렸다가 줄였다가 하면서 소리를 표현했던 응용 프로그램들을 기억할 것이다. 하지만 이제는 그 막대들도 3차원으로 표현하는 시대가 됐다. 즉 가능한 모든 것을 입체 영상으로 보이는 것이 대세다. 이뿐만이 아니다. 가상 현실(Augmented Reality) 앱은 현실에 그래픽을 입혀서 추가적인 정보를 보여주는 기술이다. 두말할 나위도 없이 이 기술의 근간은 3차원을 기반으로 한다. 현실 세계는 3차원으로 이루어져 있기 때문이다. 그만큼 현재의 아이디어들이 기술의 발전을 몰아붙이고 있다.

3차원의 그래픽을 가능하게 하는 기술의 중심에는 OpenGL이 있다. 데스크톱에서의 성공을 발판으로 이제는 임베디드 시스템(Embedded System)을 기반으로 OpenGL ES를 출시했다. iOS와 안드로이드 같은 기기뿐만 아니라, 게임 콘솔, 비행기 계기판 등 디스플레이를 하는 모든 전자 장치에 도입되고 있다. 애플은 OpenGL ES 기술을 기반으로 많은 발전을 이루어왔으며, 계속해서 최적의 지원을 하는 연산처리 장치를 내놓고 있다. OpenGL ES 3.0을 지원하는 새로운 장치들이 소개됐고, 데스크톱에서만 가능했던 기능들이 작은 iOS 장치에서 가능해지고 있다. 예전에는 평면으로만 보였던 휴대폰 화면이 보는 방향에 따라 원근감을 가지게 됐다. 이는 소프트웨어와 하드웨어 기술이 얼마나 발전했는지 보여주는 단적인 예다. 그만큼 처리 속도가 빠르게 발전했다는 말이다.

이런 흐름을 볼 때, iOS에서 OpenGL ES의 무게는 차츰 커질 것이다. 계속해서 많은 앱이 하드웨어 그래픽 가속 기능을 사용하게 될 것이며, 좀 더 세련된 디자인을 만들기 위해서 최선의 노력을 기울일 것이다. 하지만 여기서 중요한 것은 아직까지 3D 그래픽 기술의 평준화가 이루어지지 않았고, OpenGL ES도 계속해서 새로운 버전으로 발전 해가고 있다는 것이다. 여러 가지 이유 중 하나는 데스크톱에서 편안하게 사용하던 하드웨어 가속 기술들이 작은 핸드폰 안의 칩에서는 그 기능을 제대로 발휘하지 못하기 때문이다. 따라서 핸드폰 상에서 OpenGL ES의 입장에서는 하드웨어의 발전이 소프트웨어의 적용을 저해하고 있다는 결론이 만들어진다.

많은 회사에서 OpenGL ES 개발자들을 찾고 있다. 그리고 여러 다양한 앱 개발에 기본으로 사용되는 기술이 됐다. 즉, 이 기술에 회사의 미래뿐만 아니라, 개인의 미래도 있다는 말이다. 지금이 기회다. 빨리 배워서, 전문가가 돼야 한다. 이 책은 OpenGL ES를 시작하는 사람들에게 그래픽의 기본 개념부터 예제를 통한 실전 연습까지 다양하게 제공하기 때문에 책을 다 읽고 난 이후에는 독자적으로 고급 기능들을 계속해서 공부할 수 있는 자립심이 생기게 만들었다. 이 책을 통해서 3차원 개발의 꿈에 다가가기 바란다.

옮긴이 소개

황진호

IT 경력은 미국에서 시작됐다. 국내에서 석사 과정을 마치고 1년여 동안 미국의 연구기관에서 방문 연구원으로 재직했다. 미국에서 유명 통신회사의 시스템을 연구/개발하는 몇 가지 프로젝트를 마무리하고, 한국으로 돌아와 포스코 ICT에서 통신 시스템 소프트웨어 개발자로 3년 동안 근무했다. 그 후 미국의 조지 워싱턴 대학교의 컴퓨터 사이언스 학과에서 박사 과정를 졸업하고, 지금은 미국 뉴욕에 위치한 IBM Research에서 클라우드 컴퓨팅과 빅 데이터에 관한 연구를 진행 중이다. 에이콘출판사에서 펴낸 『Learning PHP,MySQL & JavaScript 한국어판』(2011), 『Concurrent Programming on Windows 한국어판』(2012), 『Creating iOS 5 Apps Develop and Design 한국어판』(2012), 『Programming iOS 5 한국어판』(2012), 『Learning PHP, MySQL & JavaScript Second Edition 한국어판』(2013)을 번역했고, 『리눅스 API의 모든것』(2012)을 공역했다.

목차

목차
  • 1 현대적인 모바일 그래픽 하드웨어 사용하기
  • 3D 렌더링이란 무엇인가
  • 그래픽 프로세서에 데이터 제공하기
  • 프레임 버퍼
  • OpenGL ES 컨텍스트
  • 3D 장면의 기하
  • 요약

  • 2 하드웨어 제대로 동작시키기
  • OpenGL ES로 코어 애니메이션 레이어 그리기
  • 코코아 터치를 OpenGL ES와 합치기
  • OpenGLES Ch2 1 예제
  • 심도 학습: GLKView는 어떻게 동작하는가
  • GLKit에서 추정하기
  • 요약

  • 3 텍스처
  • 텍스처란 무엇인가?
  • OpenGLES Ch3 1 예제
  • 심도 학습: GLKTextureLoader는 어떻게 동작하는가?
  • OpenGLES Ch3 3 예제
  • 투명도, 혼합, 멀티 텍스처링
  • 텍스터 압축
  • 요약

  • 4 빛 비추기
  • 주변, 산란, 반사 빛
  • 각 삼각형에 부딪히는 빛의 양 계산하기
  • GLKit 빛 사용하기
  • OpenGLES Ch4 1 예제
  • 텍스처에 빛 비추기
  • 프래그먼트 동작
  • 요약

  • 5 관점 전환하기
  • 깊이 렌더 버퍼
  • OpenGLES Ch5 1과 OpenGLES Ch5 2 예제
  • 심도 학습: GLKit 없이 깊이 버퍼 추가하기
  • 변환
  • 변환 지침서
  • 원근법과 시각 절단체
  • 요약

  • 6 애니메이션
  • 장면 내 동작: OpenGLES Ch6 1 예제
  • 정점 데이터 애니메이션하기
  • 색과 빛 애니메이션하기: OpenGLES Ch6 3 예제
  • 텍스처 애니메이션하기
  • 요약

  • 7 모델 불러와서 사용하기
  • 모델링 툴과 형식
  • modelplist 파일 읽기
  • OpenGLES Ch7 1 예제
  • 고급 모델
  • 요약

  • 8 특수 효과
  • 스카이박스
  • 심도 학습: GLKSkyboxEffect는 어떻게 동작하는가
  • 파티클
  • 빌보드
  • 요약

  • 9 최적화
  • 최소한으로 렌더링하기
  • 추측은 금물: 측정
  • 버퍼 복사 최소화하기
  • 상태 변경 최소화
  • 요약

  • 10 지형과 피킹
  • 지형 구현
  • 모델 추가하기
  • OpenGL ES 카메라
  • 피킹
  • 최적화하기
  • 요약

  • 11 수학 커닝 페이퍼
  • 개요
  • 행렬 디코딩
  • 사원법
  • 그래픽 수학 이겨내기
  • 요약

  • 12 정리하기
  • 개요
  • 모두 함께 사용하기
  • 장치 동작
  • 요약

  • 한국어판 특별부록 OpenGL ES 3.0 소개

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안