Mobile 3D Graphics: with OpenGL ES and M3G
暫譯: 行動3D圖形:使用OpenGL ES與M3G

Kari Pulli, Tomi Aarnio, Ville Miettinen, Kimmo Roimela, Jani Vaarala

  • 出版商: Morgan Kaufmann
  • 出版日期: 2007-11-19
  • 定價: $1,980
  • 售價: 5.0$990
  • 語言: 英文
  • 頁數: 464
  • 裝訂: Hardcover
  • ISBN: 0123737273
  • ISBN-13: 9780123737274
  • 相關分類: OpenGL
  • 立即出貨(限量)

買這商品的人也買了...

商品描述

Description

Graphics and game developers must learn to program for mobility. This book will teach you how.

"This book - written by some of the key technical experts...provides a comprehensive but practical and easily understood introduction for any software engineer seeking to delight the consumer with rich 3D interactive experiences on their phone. Like the OpenGL ES and M3G standards it covers, this book is destined to become an enduring standard for many years to come."
- Lincoln Wallen, CTO, Electronic Arts, Mobile

“This book is an escalator, which takes the field to new levels. This is especially true because the text ensures that the topic is easily accessible to everyone with some background in computer science...The foundations of this book are clear, and the authors are extremely knowledgeable about the subject.”
- Tomas Akenine-Möller, bestselling author and Professor of Computer Science at Lund University

"This book is an excellent introduction to M3G. The authors are all experienced M3G users and developers, and they do a great job of conveying that experience, as well as plenty of practical advice that has been proven in the field."
- Sean Ellis, Consultant Graphics Engineer, ARM Ltd

The exploding popularity of mobile computing is undeniable. From cell phones to portable gaming systems, the global demand for multifunctional mobile devices is driving amazing hardware and software developments. 3D graphics are becoming an integral part of these ubiquitous devices, and as a result, Mobile 3D Graphics is arguably the most rapidly advancing area of the computer graphics discipline.

Mobile 3D Graphics is about writing real-time 3D graphics applications for mobile devices. The programming interfaces explained and demonstrated in this must-have reference enable dynamic 3D media on cell phones, GPS systems, portable gaming consoles and media players.

The text begins by providing thorough coverage of background essentials, then presents detailed hands-on examples, including extensive working code in both of the dominant mobile APIs, OpenGL ES and M3G.

C/C++ and Java Developers, graphic artists, students, and enthusiasts would do well to have a programmable mobile phone on hand to try out the techniques described in this book.

The authors, industry experts who helped to develop the OpenGL ES and M3G standards, distill their years of accumulated knowledge within these pages, offering their insights into everything from sound mobile design principles and constraints, to efficient rendering, mixing 2D and 3D, lighting, texture mapping, skinning and morphing.

Along the way, readers will benefit from the hundreds of included tips, tricks and caveats.

 

Table of Contents

Chapter 1 Introduction

    1.1 Mobile phones as graphics platforms
    1. Power consumption, size, price
    2. Form factors, UI constraints
    3. Display resolution, size
    4. CPU, memory, bus bandwidth
    5. Graphics hardware, FPU
    6. Many operating systems
    7. Most phones have no OS
    1.2 History of Mobile 3D
    1. J-Phone, Nokia 3410, etc.
    2. Current market status
    1.3 Two APIs for two environments
    1. The low-level rendering pipeline in brief
    2. OpenGL ES
    3. Java constraints in brief (details in Section III)
    4. M3G
    1.4 Design principles
    1. Expand on CG&A paper
    2. Things common to GL ES and M3G
    3. API specific issues in Sections II and III

Chapter 2 OpenGL ES

    2.1 Design principles
    2.2 OpenGL ES API overview
    1. Overview of the OpenGL graphics pipeline
    2. What's in/out
    3. What was added
    4. What's new in 1.1?
    5. What's new in 2.0? (briefly, we won't cover 2.0 programming here)
    6. Optional extensions
    7. Vendor specific extensions
    2.3 Windowing / Utility API overview
    1. EGL API overview
    2. EGLUT API overview
    3. Porting from desktop GL
    4. Hello OpenGL ES example
    2.4 OpenGL ES API walk-through
    1. Controlling state
        o Description
        o Design principles
        o Examples on using
        o Implementation insights
    2. Matrix operations, controlling the camera, Viewport
    3. Vertex Input & Batching, geometry
    4. Lighting
    5. Texture mapping: basics, multi-texturing, bump maps
    6. Tests: depth, alpha, stencil, scissor
    7. Fog, Blending
    8. Point Sprites
    9. Skinning
    2.5 Implementation insights
    1. Pixel pipeline implementation
    2. Accuracy
    3. OS interaction
    4. Buffer swapping
    5. What's costly, what's not
    6. Typical fast paths
    2.6 How to write efficient code
    1. Software implementations
    2. Hardware implementations
    3. Batching geometry (VBOs, their use etc.)
    4. Handling state
    5. Rendering order
    6. Tips, tricks, caveats
    7. Mixing 2D and 3D
    2.7 How to write compatible code
    1. Variance in implementations
    2. Memory management issues (Symbian as an example)
    3. Extensions
    4. Using different API versions (single app, static vs. dynamic linkage)
    5. CPU versions
    2.8 Case studies

Chapter 3 M3G

    3.1 Special constraints in Java
    1. Performance problems in-depth
    2. GC, JIT, bounds checking, type checking
    3. Bad bytecode instruction set, no CPU access
    4. Slow Java-native traffic, native call overhead
    5. Exception handling, problems with callbacks
    6. If no OS underneath: no processes, no dynamic memory allocation
    7. Expand on material from our SIGGRAPH course
    3.2 Design principles
    1. Expand on material from our SIGGRAPH course
    3.3 API overview
    1. Graphics3D, World, Loader
    2. Mesh, Sprite3D, Appearance
    3. SkinnedMesh, MorphingMesh
    4. Keyframe animation
    5. Alignment, picking
    6. Expand on SIGGRAPH material
    7. What's new in 1.1?
    3.4 M3G API walk-through
    1. Feature A
        o Description
        o Design principles
        o Examples on using
        o Implementation insights
    2. Feature B
    3. Features including:
    4. Scene graph management
    5. Culling, state sorting, etc.
    6. Skinning, morphing
    7. Transformation hierarchies
    8. Backgrounds and Sprites vs. Textures
    3.5 How to write efficient code
    1. Tips, tricks and caveats
    2. What's costly, what's not
    3. Concentrate on things specific to M3G
    4. Particle systems
    5. Terrain rendering
    6. Dynamic meshes in general
    7. Visibility optimization (BSP, PVS, Octrees)
    8. Mixing 2D and 3D
    9. Pivot transformations
    10. Alignment tricks
    11. Memory management
    12. Hardware based implementations
    3.6 Case studies

Chapter 4 Conclusion

    4.1 Future Development
    1. Hardware evolution
        o Display resolutions, brightness, color gamut
        o New display types (external, projected, flexible, stereo, head-mounted)
        o Graphics HW becomes programmable, but fillrate remains low
        o Software implementations continue to live in the low end
    1. Java evolution
        o Ahead-of-time compilation
        o CPU support for bounds checking, exceptions, etc.
    1. API evolution
        o OpenGL ES 2.0
        o JSR-239[?]
        o M3G 2.0

    Appendix
      A. Required math

Glossary
Index

商品描述(中文翻譯)

**描述**

圖形和遊戲開發者必須學會為移動設備編程。本書將教您如何做到這一點。

「這本書由一些關鍵技術專家撰寫...為任何希望在手機上為消費者提供豐富的3D互動體驗的軟體工程師提供了全面但實用且易於理解的介紹。就像它所涵蓋的OpenGL ES和M3G標準一樣,這本書注定會成為未來許多年持久的標準。」
- Lincoln Wallen,電子藝術公司(Electronic Arts)首席技術官(CTO),移動部門

「這本書是一部電梯,將這個領域提升到新的高度。這一點尤其真實,因為文本確保了這個主題對於有一定計算機科學背景的每個人都易於接觸...這本書的基礎清晰,作者對該主題非常了解。」
- Tomas Akenine-Möller,暢銷書作者及隆德大學(Lund University)計算機科學教授

「這本書是M3G的優秀入門書。作者都是經驗豐富的M3G用戶和開發者,他們很好地傳達了這種經驗,以及許多在實踐中證明有效的實用建議。」
- Sean Ellis,ARM Ltd顧問圖形工程師

移動計算的爆炸性普及是不可否認的。從手機到便攜式遊戲系統,全球對多功能移動設備的需求正在推動驚人的硬體和軟體發展。3D圖形正成為這些無處不在的設備的不可或缺的一部分,因此,移動3D圖形無疑是計算機圖形學領域中發展最快的領域。

移動3D圖形是關於為移動設備編寫實時3D圖形應用程式。本書中解釋和演示的編程介面使得在手機、GPS系統、便攜式遊戲主機和媒體播放器上實現動態3D媒體成為可能。

文本首先提供了背景要素的全面覆蓋,然後呈現詳細的實作範例,包括在兩個主要移動API(OpenGL ES和M3G)中的大量工作代碼。

C/C++和Java開發者、圖形藝術家、學生和愛好者最好手邊有一部可編程的手機,以便嘗試本書中描述的技術。

作者是幫助開發OpenGL ES和M3G標準的行業專家,將他們多年積累的知識濃縮在這些頁面中,提供了從良好的移動設計原則和限制,到高效渲染、混合2D和3D、照明、紋理映射、皮膚和變形等各方面的見解。

在此過程中,讀者將受益於數百個包含的提示、技巧和注意事項。

**目錄**

**第1章 介紹**
1.1 手機作為圖形平台
- 功耗、尺寸、價格
- 形狀因素、UI限制
- 顯示解析度、尺寸
- CPU、記憶體、匯流排帶寬
- 圖形硬體、FPU
- 許多操作系統
- 大多數手機沒有操作系統

1.2 移動3D的歷史
- J-Phone、Nokia 3410等
- 當前市場狀況

1.3 兩個環境的兩個API
- 簡要介紹低級渲染管道
- OpenGL ES
- 簡要介紹Java限制(詳細內容見第三部分)
- M3G

1.4 設計原則
- 擴展CG&A論文
- GL ES和M3G的共同點
- 第二和第三部分的API特定問題

**第2章 OpenGL ES**
2.1 設計原則
2.2 OpenGL ES API概述
- OpenGL圖形管道概述
- 進出內容
- 新增內容
- 1.1中的新內容?
- 2.0中的新內容?(簡要,這裡不會涵蓋2.0編程)
- 可選擴展
- 供應商特定擴展

2.3 窗口/實用API概述
- EGL API概述
- EGLUT API概述
- 從桌面GL移植
- Hello OpenGL ES範例

2.4 OpenGL ES API逐步介紹
- 控制狀態
- 描述
- 設計原則
- 使用範例
- 實作見解
- 矩陣運算、控制相機、視口
- 頂點輸入與批次處理、幾何
- 照明
- 紋理映射:基礎、多重紋理、凹凸貼圖
- 測試:深度、alpha、模板、剪裁
- 霧、混合
- 點精靈
- 皮膚處理

2.5 實作見解
- 像素管道實作
- 準確性
- OS互動
- 緩衝區交換
- 什麼是昂貴的,什麼不是
- 典型的快速路徑

2.6 如何編寫高效代碼
- 軟體實作
- 硬體實作
- 批次幾何(VBOs及其使用等)
- 處理狀態
- 渲染順序
- 提示、技巧、注意事項
- 混合2D和3D

2.7 如何編寫兼容代碼
- 實作中的變異
- 記憶體管理問題(以Symbian為例)
- 擴展
- 使用不同API版本(單一應用、靜態與動態鏈接)
- CPU版本

2.8 案例研究

**第3章 M3G**
3.1 Java中的特殊限制
- 性能問題深入探討
- GC、JIT、邊界檢查、類型檢查
- 不良的字節碼指令集,無CPU訪問
- 緩慢的Java原生流量,原生調用開銷
- 異常處理,回調問題
- 如果沒有底層操作系統:沒有進程,沒有動態記憶體分配
- 擴展我們SIGGRAPH課程的材料

3.2 設計原則
- 擴展我們SIGGRAPH課程的材料

3.3 API概述
- Graphics3D、World、Loader
- Mesh、Sprite3D、Appearance
- SkinnedMesh、MorphingMesh
- 關鍵幀動畫
- 對齊、選擇
- 擴展SIGGRAPH材料
- 1.1中的新內容?

3.4 M3G API逐步介紹
- 特徵A
- 描述
- 設計原則
- 使用範例
- 實作見解
- 特徵B
- 包含的特徵:
- 場景圖管理
- 剔除、狀態排序等
- 皮膚處理、變形
- 變換層次
- 背景和精靈與紋理的區別

3.5 如何編寫高效代碼
- 提示、技巧和注意事項
- 什麼是昂貴的,什麼不是
- 專注於M3G特有的事物
- 粒子系統
- 地形渲染
- 動態網格的一般情況
- 可見性優化(BSP、PVS、八叉樹)
- 混合2D和3D
- 樞軸變換
- 對齊技巧
- 記憶體管理
- 基於硬體的實作

3.6 案例研究

**第4章 結論**
4.1 未來發展
- 硬體演變
- 顯示解析度、亮度、色域
- 新的顯示類型(外部、投影、柔性、立體、頭戴式)
- 圖形硬體變得可編程,但填充率仍然較低
- 軟體實作繼續存在於低端

4.2 Java演變
- 預編譯
- CPU對邊界檢查、異常等的支持

4.3 API演變
- OpenGL ES 2.0
- JSR-239[?]
- M3G 2.0

**附錄**
A. 所需數學

術語表
索引

最後瀏覽商品 (20)