-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

OpenGL ES 3.0編程指南(原書第2版)

( 簡體 字)
作者:(美) Dan Ginsburg   Budirijanto Purnomo 等著類別:1. -> 多媒體 -> OpenGL
譯者:
出版社:機械工業出版社OpenGL ES 3.0編程指南(原書第2版) 3dWoo書號: 40971
詢問書籍請說出此書號!

缺書
NT售價: 395

出版日:3/1/2015
頁數:344
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787111489153
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

GL ES 3.0是在手持設備和嵌入式設備上渲染復雜3D圖形的軟件接口。OpenGL ES是具有可編程3D硬件的手持和嵌入式設備(包括手機、個人數字助理(PDA)、控制臺、家用設備、車輛和航空電子設備)的主要圖形程序庫。本書詳細地介紹了整個OpenGL ES 3.0應用程序編程接口(API)和管線,并包含詳細的例子,為手持設備的各種高性能3D應用的開發提供指導。

目標讀者

本書是為對學習OpenGL ES 3.0感興趣的開發人員所寫的,我們希望讀者在計算機圖形學領域有一定的基礎。在正文部分我們解釋了許多相關的圖形學概念,因為它們與OpenGL ES 3.0的各個部分有關,但是我們期望讀者理解基本的3D概念。本書中的代碼示例都以C語言編寫。我們假定讀者熟悉C或者C++,并且只介紹與OpenGL ES 3.0相關的語言主題。

讀者將學到有關圖形管線各個方面的設置和編程的知識。本書詳細介紹了如何編寫頂點和片段著色器,以及如何實現逐像素照明和粒子系統等高級渲染技術。此外,書中還提供性能提示以及有效使用API和硬件的技巧。

完成本書的學習之后,讀者就能為編寫充分利用嵌入式圖形硬件可編程能力的OpenGL ES 3.0應用做好準備。

本書的組織結構

本書將順序介紹API,幫助你逐步形成對OpenGL ES 3.0的認識。

第1章——OpenGL ES 3.0簡介

第1章簡單介紹OpenGL ES,概述了OpenGL ES 3.0圖形管線,討論了OpenGL ES 3.0的設計理念和限制,最后介紹了OpenGL ES 3.0中使用的一些約定和類型。

第2章——你好,三角形:一個OpenGL ES 3.0示例

第2章介紹繪制三角形的一個簡單OpenGL ES 3.0示例。我們的目的是說明OpenGL ES 3.0程序的樣子,向讀者介紹一些API概念,并說明如何構建和運行OpenGL ES 3.0示例程序。

第3章——EGL簡介

第3章介紹EGL——為OpenGL ES 3.0創建表面和渲染上下文的API。我們說明與原生窗口系統通信、選擇配置和創建EGL渲染上下文及表面的方法,傳授足夠多的EGL知識,你可以了解到啟動OpenGL ES 3.0進行渲染所需的所有知識。

第4章——著色器和程序

著色器對象和程序對象是OpenGL ES 3.0中最基本的對象。第4章介紹創建著色器對象、編譯著色器和檢查編譯錯誤的方法。這一章還說明如何創建程序對象、將著色器對象連接到程序對象以及鏈接最終程序對象的方法。我們討論如何查詢程序對象的信息以及加載統一變量(uniform)的方法。此外,你將學習有關源著色器和程序二進制代碼之間的差別以及它們的使用方法。

第5章——OpenGL ES著色語言

第5章介紹編寫著色器所需的著色語言的基礎知識。這些著色語言基礎知識包括變量和類型、構造器、結構、數組、統一變量、統一變量塊(uniform block)和輸入/輸出變量。該章還描述著色語言的某些更細微的部分,例如精度限定符和不變性。

第6章——頂點屬性、頂點數組和緩沖區對象

從第6章開始(到第11章為止),我們將詳細介紹管線,教授設置和編程圖形管線各個部分的方法。這一旅程從介紹幾何形狀輸入圖形管線的方法開始,包含了對頂點屬性、頂點數組和緩沖區對象的討論。

第7章——圖元裝配和光柵化

在前一章討論幾何形狀輸入圖形管線的方法之后,第7章將討論幾何形狀如何裝配成圖元,介紹OpenGL ES 3.0中所有可用的圖元類型,包括點精靈、直線、三角形、三角形條帶和三角扇形。此外,我們還說明了在頂點上進行坐標變換的方法,并簡單介紹了OpenGL ES 3.0管線的光柵化階段。

第8章——頂點著色器

我們所介紹的管線的下一部分是頂點著色器。第8章概述了頂點著色器如何融入管線以及OpenGL ES 著色語言中可用于頂點著色器的特殊變量,介紹了多個頂點著色器的示例,包括逐像素照明和蒙皮(skinning)。我們還給出了用頂點著色器實現OpenGL ES 1.0(和1.1)固定功能管線的示例。

第9章——紋理

第9章開始介紹片段著色器,描述OpenGL ES 3.0中所有可用的紋理功能。該章提供了創建紋理、加載紋理數據以及紋理渲染的細節,描述了紋理包裝模式、紋理過濾、紋理格式、壓縮紋理、采樣器對象、不可變紋理、像素解包緩沖區對象和Mip貼圖。該章介紹了OpenGL ES 3.0支持的所有紋理類型:2D紋理、立方圖、2D紋理數組和3D紋理。

第10章——片段著色器

第9章的重點是如何在片段著色器中使用紋理,第10章介紹編寫片段著色器所需知道的其他知識。該章概述了片段著色器和所有可用的特殊內建變量,還演示了用片段著色器實現OpenGL ES 1.1中所有固定功能技術的方法。多重紋理、霧化、Alpha測試和用戶裁剪平面的例子都使用片段著色器實現。

第11章——片段操作

第11章討論可以適用于整個幀緩沖區或者在OpenGL ES 3.0片段管線中執行片段著色器后適用于單個片段的操作。這些操作包括剪裁測試、模板測試、深度測試、多重采樣、混合和抖動。本章介紹OpenGL ES 3.0圖形管線的最后階段。

第12章——幀緩沖區對象

第12章討論使用幀緩沖區對象渲染屏幕外表面。幀緩沖區對象有多種用法,最常見的是渲染到一個紋理。本章提供API幀緩沖區對象部分的完整概述。理解幀緩沖區對象對于實現許多高級特效(如反射、陰影貼圖和后處理)至關重要。

第13章——同步對象和柵欄

第13章概述同步對象和柵欄,它們是在OpenGL ES 3.0主機應用和GPU執行中同步的有效圖元。我們討論同步對象和柵欄的使用方法,并以一個示例作為結束。

第14章——OpenGL ES 3.0高級編程

第14章是核心章節,將本書介紹的許多主題串聯在一起。我們已經選擇了高級渲染技術的一個樣本,并展示了實現這些功能的示例。該章包含使用法線貼圖的逐像素照明、環境貼圖、粒子系統、圖像后處理、程序紋理、陰影貼圖、地形渲染和投影紋理等渲染技術。

第15章——狀態查詢

OpenGL ES 3.0中有大量的狀態查詢。對于你的幾乎任何設置,都有獲取當前值的對應方法。第15章提供了OpenGL ES 3.0中各種可用狀態查詢的參考。

第16章——OpenGL ES平臺

在最后一章中,我們拋開API的細節,討論如何為iOS 7、Android 4.3 NDK、Android 4.3 SDK、Windows和Linux構建OpenGL ES樣板代碼。該章的意圖是作為一個指南,幫助你在所選擇的OpenGL ES 3.0平臺上建立和運行樣板代碼。

附錄A——GL_HALF_FLOAT

附錄A詳細介紹半浮點格式,并提供如何從IEEE浮點值轉換為半浮點值(以及相反方向的轉換)的參考。

附錄B——內建函數

附錄B提供了OpenGL ES著色語言中所有可用的內建函數。

附錄C——ES框架API

附錄C提供了我們為本書開發的實用框架的參考,并說明了每個函數的作用。

OpenGL ES 3.0參考卡片

本書正文前面有幾頁OpenGL ES 3.0參考卡片,版權歸Khronos所有,并授權我們使用。該參考卡片包含了OpenGL ES 3.0中所有函數的完整列表以及OpenGL ES著色語言中的所有類型、操作符、限定符、內建函數和函數。

代碼和著色器示例

本書包括大量程序和著色器示例。你可以從本書英文版網站(opengles-book.com)上下載這些示例,該網站提供了寄存本書代碼的github.com網站鏈接。在寫作本書時,示例程序已在iOS7、Android 4.3 NDK、 Android 4.3 SDK、 Windows (OpenGL ES 3.0 Emulation)和 Ubuntu Linux上編譯和測試過。該網站提供了任何必要工具的下載鏈接。
內容簡介:

簡介
本書由資深OpenGL技術專家親筆撰寫,全面介紹OpenGL ES 3.0的各種特性及新增功能, 通過大量已經編譯和測試過的實例,詳細講解OpenGL ES 3.0中的應用程序接口(API)和圖形管線,既涵蓋簡單圖形的渲染方法,又深入介紹逐像素照明和粒子系統等高級渲染技術,并且包含大量有效使用API和硬件的實用技巧,為手持設備的各種高性能3D應用開發提供翔實指導。
本書共16章:第1章簡單介紹OpenGL ES ,并概述OpenGL ES 3.0圖形管線;第2章通過繪制一個三角形的簡單OpenGL ES 3.0示例程序,講解一些API概念,并說明如何構建和運行OpenGL ES示例程序;第3章講述為OpenGL ES 3.0創建表面和渲染上下文的API——EGL;第4章討論創建著色器對象、編譯著色器和檢查編譯錯誤的方法;第5章講解編寫著色器所需的著色語言基本知識;第6章詳細介紹幾何形狀輸入圖形管線的方法,包含對頂點屬性、頂點數組和緩沖區對象的討論;第7章討論幾何形狀如何裝配成圖元,介紹OpenGL ES 3.0中所有可用圖元類型,包括點精靈、直線、三角形、三角形條帶和三角扇形;第8章概述頂點著色器如何融入管線,以及OpenGL ES 著色語言中可用于頂點著色器的特殊變量;第9章和第10章介紹片段著色器,包括多重紋理、霧化、Alpha測試和用戶裁剪平面等;第11章討論片段操作,包括剪裁測試、模板測試、深度測試、多重采樣、混合和抖動;第12章介紹使用幀緩沖區對象渲染屏幕外表面;第13章討論同步對象和柵欄的使用方法;第14章介紹OpenGL ES 3.0高級編程,包含使用法線貼圖的逐像素照明、環境貼圖、粒子系統、圖像后處理、程序紋理、陰影貼圖、地形渲染和投影紋理等渲染技術;第15章提供OpenGL ES 3.0中各種可用狀態查詢的參考;第16章討論如何為iOS 7、Android 4.3 NDK、Android 4.3 SDK、Windows和Linux構建OpenGL ES樣板代碼。
目錄:

本書贊譽

譯者序



前言

致謝

第1章 OpenGL ES 3.0簡介 1

1.1 OpenGL ES 3.0 2

1.1.1 頂點著色器 3

1.1.2 圖元裝配 5

1.1.3 光柵化 5

1.1.4 片段著色器 6

1.1.5 逐片段操作 7

1.2 OpenGL ES 3.0新功能 8

1.2.1 紋理 8

1.2.2 著色器 10

1.2.3 幾何形狀 11

1.2.4 緩沖區對象 11

1.2.5 幀緩沖區 12

1.3 OpenGL ES 3.0和向后兼容性 12

1.4 EGL 13

1.4.1 使用OpenGL ES 3.0編程 14

1.4.2 庫和包含文件 14

1.5 EGL命令語法 14

1.6 OpenGL ES命令語法 15

1.7 錯誤處理 16

1.8 基本狀態管理 16

1.9 延伸閱讀 17

第2章 你好,三角形:一個OpenGL ES 3.0示例 18

2.1 代碼框架 18

2.2 示例下載位置 19

2.3 “你好,三角形”(Hello Triangle)示例 19

2.4 使用OpenGL ES 3.0框架 23

2.5 創建簡單的頂點和片段著色器 24

2.6 編譯和加載著色器 25

2.7 創建一個程序對象并鏈接著色器 26

2.8 設置視口和清除顏色緩沖區 27

2.9 加載幾何形狀和繪制圖元 28

2.10 顯示后臺緩沖區 29

2.11 小結 29

第3章 EGL簡介 30

3.1 與窗口系統通信 30

3.2 檢查錯誤 31

3.3 初始化EGL 32

3.4 確定可用表面配置 32

3.5 查詢EGLConf?ig屬性 33

3.6 讓EGL選擇配置 35

3.7 創建屏幕上的渲染區域:EGL窗口 37

3.8 創建屏幕外渲染區域:EGL Pbuffer 39

3.9 創建一個渲染上下文 42

3.10 指定某個EGLContext為當前上下文 43

3.11 結合所有EGL知識 44

3.12 同步渲染 46

3.13 小結 46

第4章 著色器和程序 47

4.1 著色器和程序 47

4.1.1 創建和編譯一個著色器 48

4.1.2 創建和鏈接程序 51

4.2 統一變量和屬性 54

4.2.1 獲取和設置統一變量 55

4.2.2 統一變量緩沖區對象 60

4.2.3 獲取和設置屬性 64

4.3 著色器編譯器 64

4.4 程序二進制碼 65

4.5 小結 66

第5章 OpenGL ES著色語言 67

5.1 OpenGL ES著色語言基礎知識 67

5.2 著色器版本規范 68

5.3 變量和變量類型 68

5.4 變量構造器 69

5.5 向量和矩陣分量 70

5.6 常量 71

5.7 結構 71

5.8 數組 72

5.9 運算符 72

5.10 函數 73

5.11 內建函數 74

5.12 控制流語句 74

5.13 統一變量 75

5.14 統一變量塊 75

5.15 頂點和片段著色器輸入/輸出 77

5.16 插值限定符 79

5.17 預處理器和指令 80

5.18 統一變量和插值器打包 81

5.19 精度限定符 82

5.20 不變性 83

5.21 小結 85

第6章 頂點屬性、頂點數組和緩沖區對象 87

6.1 指定頂點屬性數據 87

6.1.1 常量頂點屬性 88

6.1.2 頂點數組 88

6.2 在頂點著色器中聲明頂點屬性變量 95

6.3 頂點緩沖區對象 98

6.4 頂點數組對象 106

6.5 映射緩沖區對象 109

6.6 復制緩沖區對象 112

6.7 小結 113

第7章 圖元裝配和光柵化 114

7.1 圖元 114

7.1.1 三角形 114

7.1.2 直線 115

7.1.3 點精靈 116

7.2 繪制圖元 117

7.2.1 圖元重啟 119

7.2.2 驅動頂點 119

7.2.3 幾何形狀實例化 120

7.2.4 性能提示 122

7.3 圖元裝配 124

7.3.1 坐標系統 124

7.3.2 透視分割 126

7.3.3 視口變換 126

7.4 光柵化 127

7.4.1 剔除 127

7.4.2 多邊形偏移 128

7.5 遮擋查詢 130

7.6 小結 131

第8章 頂點著色器 132

8.1 頂點著色器概述 133

8.1.1 頂點著色器內建變量 133

8.1.2 精度限定符 135

8.1.3 頂點著色器中的統一變量限制數量 136

8.2 頂點著色器示例 138

8.2.1 矩陣變換 139

8.2.2 頂點著色器中的照明 141

8.3 生成紋理坐標 145

8.4 頂點蒙皮 146

8.5 變換反饋 150

8.6 頂點紋理 151

8.7 將OpenGL ES 1.1頂點管線作為ES 3.0頂點著色器 152

8.8 小結 159

第9章 紋理 160

9.1 紋理基礎 160

9.1.1 2D紋理 161

9.1.2 立方圖紋理 161

9.1.3 3D紋理 162

9.1.4 2D紋理數組 163

9.1.5 紋理對象和紋理的加載 163

9.1.6 紋理過濾和mip貼圖 167

9.1.7 自動mip貼圖生成 171

9.1.8 紋理坐標包裝 172

9.1.9 紋理調配 173

9.1.10 紋理細節級別 173

9.1.11 深度紋理對比(百分比漸進過濾) 174

9.1.12 紋理格式 174

9.1.13 在著色器中使用紋理 180

9.1.14 使用立方圖紋理的示例 182

9.1.15 加載3D紋理和2D紋理數組 184

9.2 壓縮紋理 186

9.3 紋理子圖像規范 188

9.4 從顏色緩沖區復制紋理數據 191

9.5 采樣器對象 193

9.6 不可變紋理 195

9.7 像素解包緩沖區對象 196

9.8 小結 197

第10章 片段著色器 198

10.1 固定功能片段著色器 199

10.2 片段著色器概述 200

10.2.1 內建特殊變量 201

10.2.2 內建常量 202

10.2.3 精度限定符 202

10.3 用著色器實現固定功能技術 203

10.3.1 多重紋理 203

10.3.2 霧化 204

10.3.3 Alpha測試(使用Discard) 207

10.3.4 用戶裁剪平面 208

10.4 小結 209

第11章 片段操作 210

11.1 緩沖區 211

11.1.1 請求更多緩沖區 211

11.1.2 清除緩沖區 212

11.1.3 用掩碼控制幀緩沖區的寫入 213

11.2 片段測試和操作 214

11.2.1 使用剪裁測試 214

11.2.2 模板緩沖區測試 215

11.3 混合 220

11.4 抖動 221

11.5 多重采樣抗鋸齒 222

11.6 在幀緩沖區讀取和寫入像素 223

11.7 多重渲染目標 226

11.8 小結 229

第12章 幀緩沖區對象 230

12.1 為什么使用幀緩沖區對象 230

12.2 幀緩沖區和渲染緩沖區對象 231

12.2.1 選擇渲染緩沖區與紋理作為幀緩沖區附著的對比 232

12.2.2 幀緩沖區對象與EGL表面的對比 232

12.3 創建幀緩沖區和渲染緩沖區對象 233

12.4 使用幀緩沖區對象 234

12.4.1 多重采樣渲染緩沖區 235

12.4.2 渲染緩沖區格式 235

12.5 使用幀緩沖區對象 237

12.5.1 連接渲染緩沖區作為幀緩沖區附著 238

12.5.2 連接一個2D紋理作為幀緩沖區附著 238

12.5.3 連接3D紋理的一個圖像作為幀緩沖區附著 240

12.5.4 檢查幀緩沖區完整性 241

12.6 幀緩沖區位塊傳送 242

12.7 幀緩沖區失效 243

12.8 刪除幀緩沖區和渲染緩沖區對象 244

12.9 刪除用作幀緩沖區附著的渲染緩沖區對象 245

12.10 示例 246

12.11 性能提示和技巧 251

12.12 小結 251

第13章 同步對象和柵欄 252

13.1 刷新和結束 252

13.2 為什么使用同步對象 253

13.3 創建和刪除同步對象 253

13.4 等待和向同步對象發送信號 253

13.5 示例 254

13.6 小結 255

第14章 OpenGL ES 3.0高級編程 256

14.1 逐片段照明 256

14.1.1 使用法線貼圖的照明 257

14.1.2 照明著色器 258

14.1.3 照明方程式 260

14.2 環境貼圖 261

14.3 使用點精靈的粒子系統 264

14.3.1 粒子系統設置 264

14.3.2 粒子系統頂點著色器 265

14.3.3 粒子系統片段著色器 266

14.4 使用變換反饋的粒子系統 268

14.4.1 粒子系統渲染算法 269

14.4.2 使用變換反饋發射粒子 269

14.4.3 渲染粒子 273

14.5 圖像后處理 274

14.5.1 渲染到紋理設置 274

14.5.2 模糊片段著色器 274

14.5.3 眩光 275

14.6 投影紋理 276

14.6.1 投影紋理基礎 277

14.6.2 投影紋理所用的矩陣 278

14.6.3 投影聚光燈著色器 278

14.7 使用3D紋理的噪聲 281

14.7.1 生成噪聲 281

14.7.2 使用噪聲 285

14.8 過程紋理 286

14.8.1 過程紋理示例 287

14.8.2 過程紋理的抗鋸齒 289

14.8.3 關于過程紋理的延伸閱讀 291

14.9 用頂點紋理讀取渲染地形 291

14.9.1 生成一個正方形的地形網格 292

14.9.2 在頂點著色器中計算頂點法線并讀取高度值 293

14.9.3 大型地形渲染的延伸閱讀 294

14.10 使用深度紋理的陰影 294

14.10.1 從光源位置渲染到深度紋理 294

14.10.2 從眼睛位置用深度紋理渲染 297

14.11 小結 299

第15章 狀態查詢 300

15.1 OpenGL ES 3.0實現字符串查詢 300

15.2 查詢OpenGL ES實現決定的限制 301

15.3 查詢OpenGL ES狀態 303

15.4 提示 306

15.5 實體名稱查詢 307

15.6 不可編程操作控制和查詢 307

15.7 著色器和程序狀態查詢 308

15.8 頂點屬性查詢 309

15.9 紋理狀態查詢 310

15.10 采樣器查詢 310

15.11 異步對象查詢 311

15.12 同步對象查詢 311

15.13 頂點緩沖區查詢 312

15.14 渲染緩沖區和幀緩沖區狀態查詢 312

15.15 小結 313

第16章 OpenGL ES平臺 314

16.1 在包含Visual Studio的Microsoft Windows上構建 314

16.2 在Ubuntu Linux上構建 316

16.3 在Android 4.3+ NDK (C++)上構建 317

16.3.1 先決條件 317

16.3.2 用Android NDK構建示例代碼 318

16.4 在Android 4.3+ SDK上構建(Java) 318

16.5 在iOS 7上構建 319

16.5.1 先決條件 319

16.5.2 用Xcode 5構建示例代碼 319

16.6 小結 320

附錄A GL_HALF_FLOAT 321

附錄B 內 建 函 數 325

附錄C ES框架API 338
序: