OpenGL Distilled (Paperback)
暫譯: OpenGL 精華 (平裝本)
Paul Martz
- 出版商: Addison Wesley
- 出版日期: 2006-03-01
- 售價: $1,530
- 貴賓價: 9.5 折 $1,454
- 語言: 英文
- 頁數: 304
- 裝訂: Paperback
- ISBN: 0321336798
- ISBN-13: 9780321336798
-
相關分類:
OpenGL
立即出貨 (庫存=1)
買這商品的人也買了...
-
$2,480$2,356 -
$2,370$2,252 -
$550$468 -
$990$782 -
$890$703 -
$1,078Operating System Principles, 7/e(IE) (美國版ISBN:0471694665-Operating System Concepts, 7/e) (平裝)
-
$680$578 -
$1,120$1,098 -
$880$695 -
$880$695 -
$780$741 -
$780$663 -
$720$569 -
$620$490 -
$580$493 -
$650$507 -
$650$507 -
$750$593 -
$750$593 -
$600$480 -
$720$612 -
$1,800$1,764 -
$399Cocoa Programming for Mac OS X, 3/e
-
$550$435 -
$490$387
相關主題
商品描述
Description
OpenGL opens the door to the world of high-quality, high-performance 3D computer graphics. The preferred application programming interface for developing 3D applications, OpenGL is widely used in video game development, visualization and simulation, CAD, virtual reality, modeling, and computer-generated animation.
OpenGL® Distilled provides the fundamental information you need to start programming 3D graphics, from setting up an OpenGL development environment to creating realistic textures and shadows. Written in an engaging, easy-to-follow style, this book makes it easy to find the information you're looking for. You'll quickly learn the essential and most-often-used features of OpenGL 2.0, along with the best coding practices and troubleshooting tips.
Topics include
- Drawing and rendering geometric data such as points, lines, and polygons
- Controlling color and lighting to create elegant graphics
- Creating and orienting views
- Increasing image realism with texture mapping and shadows
- Improving rendering performance
- Preserving graphics integrity across platforms
A companion Web site includes complete source code examples, color versions of special effects described in the book, and additional resources.
Table of Contents
Preface xv
Acknowledgments xxiii
About the Author xxvChapter 1. An Introduction to OpenGL 11.1 What Is OpenGL? 2
1.1.1 Fundamentals and Architecture 4
1.1.2 Syntax 8
1.1.3 State and Queries 10
1.2 GLUT 17
1.3 GLU 18
1.4 Development Environment 18
1.4.1 Apple Mac OS X 19
1.4.2 Linux 20
1.4.3 Microsoft Windows 21
1.5 A Simple Example 22
1.6 History of OpenGL 26
1.6.1 Before 1992 26
1.6.2 OpenGL Compared with Iris GL 28
1.6.3 OpenGL Compared with PEX 28
1.6.4 Continued Evolution of OpenGL 29
1.7 More Information 30
1.8 References 30
Chapter 2. Drawing Primitives 33
2.1 OpenGL Primitives 34
2.1.1 Primitive Types 35
2.1.2 Vertex Sharing 37
2.2 Specifying Vertex Data 37
2.2.1 Drawing Primitives Using glBegin()/glEnd() 38
2.2.2 Drawing Primitives Using Vertex Arrays 40
2.3 Drawing Details 54
2.3.1 Clearing the Framebuffer 54
2.3.2 Modeling Transformations 56
2.3.3 Smooth and Flat Shading 56
2.3.4 Polygon Mode 57
2.3.5 The Depth Test 58
2.3.6 Co-Planar Primitives 58
2.3.7 Alpha and Transparency 61
2.4 Performance Issues 63
2.4.1 Display Lists 63
2.4.2 Face Culling 66
2.4.3 Vertex Array Size 67
2.5 More Information 68
2.6 References 68
Chapter 3. Transformation and Viewing 69
3.1 Coordinate Systems and Matrices 71
3.1.1 Handedness 71
3.1.2 Matrices 72
3.1.3 Matrix Stacks and Matrix State 73
3.1.4 Matrix Manipulation Commands 74
3.2 The Transformation Pipeline 76
3.2.1 Object Coordinates 77
3.2.2 The Model Transformation 78
3.2.3 World Coordinates 79
3.2.4 The View Transformation 80
3.2.5 Eye Coordinates 80
3.2.6 The Projection Transformation 81
3.2.7 Clip Coordinates 81
3.2.8 Perspective Division 81
3.2.9 Normalized Device Coordinates 81
3.2.10 The Viewport Transformation 82
3.2.11 Window Coordinates 82
3.2.12 Controlling Transformations 82
3.3 Setting the Model-View Matrix 84
3.3.1 Creating the View Transformation with gluLookAt() 85
3.3.2 Creating the View Transformation Matrix 86
3.3.3 View Transformations in the Example Code 87
3.4 Perspective and Parallel Projections 88
3.5 The Viewport 90
3.6 Selection 91
3.6.1 Performing a Selection Pass 92
3.6.2 Selection in the Example Code 96
3.7 More Information 97
3.8 References 98
Chapter 4. Lighting 99
4.1 Overview 101
4.1.1 Ambient, Diffuse, and Specular Light 101
4.1.2 Controlling OpenGL Lighting 102
4.1.3 Minimal Lighting Code 103
4.1.4 Internal Lighting Computation 103
4.2 Normals 104
4.3 Light Parameters 105
4.3.1 Typical Usage 106
4.3.2 More Information 106
4.4 Material Parameters 107
4.4.1 Changing Material Parameters with glColor*() 108
4.4.2 Typical Usage 110
4.4.3 More Information 110
4.5 Positional and Directional Lights 111
4.6 Debugging Lights 112
4.6.1 Debugging a Blank Window 112
4.6.2 Normals 113
4.6.3 Incorrect Face Culling 113
4.6.4 Debugging Position and Direction 113
4.6.5 Debugging Light Colors 114
4.6.6 Per-Vertex Lighting Artifacts 114
4.6.7 Missing Specular Highlights 115
4.6.8 Line and Point Colors 115
4.7 More Information 116
4.8 References 117
Chapter 5. Pixel Rectangles 119
5.1 Drawing Pixels 120
5.1.1 The Current Raster Position 121
5.1.2 Drawing Pixel Rectangles with glDrawPixels() 124
5.2 Reading Pixels 126
5.3 Copying Pixels 127
5.4 Performance Issues 128
5.4.1 Using Alternatives to glDrawPixels() 128
5.4.2 Flushing the OpenGL Pipeline 129
5.5 Debugging 129
5.5.1 Incorrect Raster Position 129
5.5.2 Clipped Raster Position 130
5.5.3 Texture or Fog Enabled 130
5.5.4 Depth Test 131
5.5.5 Pixel Data Alignment 131
5.5.6 Obscured Windows 132
5.5.7 Memory Allocation Issues 132
5.6 More Information 133
5.7 References 133
Chapter 6. Texture Mapping 135
6.1 Using Texture Maps 136
6.1.1 Texture Objects 138
6.1.2 Texture Coordinates 145
6.1.3 Multitexturing 150
6.1.4 Texture Mapping Example 153
6.2 Lighting and Shadows with Texture 157
6.2.1 Static Lighting 158
6.2.2 Light Maps 160
6.2.3 Depth Maps 162
6.2.4 Specular Highlights 167
6.2.5 Environment Maps 170
6.3 Debugging 173
6.3.1 OpenGL Error Code 173
6.3.2 Texture State 174
6.3.3 Texture Completeness 175
6.3.4 Missing Textures 176
6.3.5 Inverted Textures 177
6.4 More Information 178
6.5 References 179
Chapter 7. Extensions and Versions 181
7.1 Extensions 182
7.1.1 Querying for an Extension 184
7.1.2 Obtaining and Calling Extension Commands 185
7.2 Versions 188
7.3 Extension- and Version-Safe Code 190
7.4 More Information 194
Chapter 8. Platform-Specific Interfaces 197
8.1 Concepts 198
8.2 Apple Mac OS X 199
8.2.1 Creating Contexts 200
8.2.2 Using Contexts 202
8.2.3 Swapping Buffers 203
8.2.4 Deleting Contexts 203
8.3 Linux 203
8.3.1 Creating Contexts 204
8.3.2 Using Contexts 207
8.3.3 Swapping Buffers 208
8.3.4 Deleting Contexts 208
8.4 Microsoft Windows 209
8.4.1 Creating the Window 209
8.4.2 Creating Contexts 209
8.4.3 Using Contexts 211
8.4.4 Swapping Buffers 213
8.4.5 Deleting Contexts 213
8.5 More Information 214
8.6 References 214
Appendix A. Other Features 215
A.1 Multisample 215
A.2 Occlusion Queries 216
A.3 Fog 216
A.4 Clip Planes 217
A.5 Stencil 217
A.6 The Accumulation Buffer 218
A.7 Shading Language 218
A.7.1 A Shader Example 219
A.7.2 More Information 221
A.8 References 221
Appendix B. Best Practices 223
B.1 State 223
B.2 Errors 224
B.3 Precision 225
B.3.1 Magnitude 226
B.3.2 Round-Off 226
B.3.3 Depth Buffer 227
B.4 Objects 227
Appendix C. Performance 229
C.1 Measure Performance 229
C.2 Avoid Software Rendering 231
C.3 Reduce Pipeline Bottlenecks 232
C.3.1 CPU Limited 233
C.3.2 Geometry Limited 234
C.3.3 Fill Limited 235
C.3.4 Closing Thoughts on Pipeline Bottlenecks 236
C.4 Cull Unseen Geometry 237
C.5 State Changes and Queries 238
Appendix D. Troubleshooting and Debugging 241
D.1 Debugging Tools 241
D.2 OpenGL Errors 242
D.2.1 Check the OpenGL Error Code 242
D.2.2 Specific Errors 242
D.3 Debugging a Blank Window 245
D.3.1 Use Good Code Development Practices 245
D.3.2 Use glGetError() 245
D.3.3 Enable Vertex Arrays 246
D.3.4 Set Appropriate Clip Planes 246
D.3.5 Use Correct Transformations 247
D.3.6 Swap Buffers 247
D.3.7 Call glClear() 248Bibliography 251
Index 255
商品描述(中文翻譯)
描述
OpenGL 開啟了高品質、高效能 3D 電腦圖形的世界。作為開發 3D 應用程式的首選應用程式介面,OpenGL 廣泛應用於電子遊戲開發、視覺化與模擬、CAD、虛擬實境、建模以及電腦生成動畫。
《OpenGL® Distilled》提供了您開始編程 3D 圖形所需的基本資訊,從設置 OpenGL 開發環境到創建逼真的紋理和陰影。本書以引人入勝、易於理解的風格撰寫,使您能輕鬆找到所需的資訊。您將快速學會 OpenGL 2.0 的基本和最常用的功能,以及最佳的編碼實踐和故障排除技巧。
主題包括
- 繪製和渲染幾何數據,如點、線和多邊形
- 控制顏色和光照以創建優雅的圖形
- 創建和定向視圖
- 通過紋理映射和陰影提高圖像的真實感
- 改善渲染性能
- 在不同平台上保持圖形的完整性
伴隨的網站包括完整的源代碼範例、書中描述的特效的彩色版本以及其他資源。
目錄
前言 xv
致謝 xxiii
關於作者 xxv
第 1 章 OpenGL 簡介 1
1.1 什麼是 OpenGL? 2
1.1.1 基礎和架構 4
1.1.2 語法 8
1.1.3 狀態和查詢 10
1.2 GLUT 17
1.3 GLU 18
1.4 開發環境 18
1.4.1 Apple Mac OS X 19
1.4.2 Linux 20
1.4.3 Microsoft Windows 21
1.5 一個簡單的範例 22
1.6 OpenGL 的歷史 26
1.6.1 1992 年之前 26
1.6.2 OpenGL 與 Iris GL 的比較 28
1.6.3 OpenGL 與 PEX 的比較 28
1.6.4 OpenGL 的持續演變 29
1.7 更多資訊 30
1.8 參考文獻 30
第 2 章 繪製基本圖形 33
2.1 OpenGL 基本圖形 34
2.1.1 基本圖形類型 35
2.1.2 頂點共享 37
2.2 指定頂點數據 37
2.2.1 使用 glBegin()/glEnd() 繪製基本圖形 38
2.2.2 使用頂點陣列繪製基本圖形 40
2.3 繪製細節 54
2.3.1 清除幀緩衝區 54
2.3.2 建模變換 56
2.3.3 平滑和平面著色 56
2.3.4 多邊形模式 57
2.3.5 深度測試 58
2.3.6 共平面基本圖形 58
2.3.7 Alpha 和透明度 61
2.4 性能問題 63
2.4.1 顯示列表 63
2.4.2 面剔除 66
2.4.3 頂點陣列大小 67
2.5 更多資訊 68
2.6 參考文獻 68
第 3 章 變換與視圖 69
3.1 坐標系和矩陣 71
3.1.1 方向性 71
3.1.2 矩陣 72
3.1.3 矩陣堆疊和矩陣狀態 73
3.1.4 矩陣操作命令 74
3.2 變換管道 76
3.2.1 物體坐標 77
3.2.2 模型變換 78
3.2.3 世界坐標 79
3.2.4 視圖變換 80
3.2.5 眼睛坐標 80
3.2.6 投影變換 81
3.2.7 剪裁坐標 81
3.2.8 透視除法 81
3.2.9 標準化設備坐標 81
3.2.10 視口變換 82
3.2.11 窗口坐標 82
3.2.12 控制變換 82
3.3 設置模型-視圖矩陣 84
3.3.1 使用 gluLookAt() 創建視圖變換 85
3.3.2 創建視圖變換矩陣 86
3.3.3 範例代碼中的視圖變換 87
3.4 透視和平行投影 88
3.5 視口 90
3.6 選擇 91
3.6.1 執行選擇通過 92
3.6.2 範例代碼中的選擇 96
3.7 更多資訊 97
3.8 參考文獻 98
第 4 章 照明 99
4.1 概述 101
4.1.1 環境光、漫反射光和鏡面光 101
4.1.2 控制 OpenGL 照明 102
4.1.3 最小照明代碼 103
4.1.4 內部照明計算 103
4.2 法線 104
4.3 光源參數 105
4.3.1 典型用法 106
4.3.2 更多資訊 106
4.4 材質參數 107
4.4.1 使用 glColor*() 更改材質參數 108
4.4.2 典型用法 110
4.4.3 更多資訊 110
4.5 定位光和方向光 111
4.6 照明除錯 112
4.6.1 除錯空白窗口 112
4.6.2 法線 113
4.6.3 錯誤的面剔除 113
4.6.4 除錯位置和方向 113
4.6.5 除錯光源顏色 114
4.6.6 每個頂點的照明瑕疵 114
4.6.7 鏡面高光缺失 115
4.6.8 線條和點的顏色 115
4.7 更多資訊 116
4.8 參考文獻 117
第 5 章 像素矩形 119
5.1 繪製像素 120
5.1.1 當前光柵位置 121
5.1.2 使用 glDrawPixels() 繪製像素矩形 124
5.2 讀取像素 126
5.3 複製像素 127
5.4 性能問題 128
5.4.1 使用替代 glDrawPixels() 的方法 128
5.4.2 刷新 OpenGL 管道 129
5.5 除錯 129
5.5.1 錯誤的光柵位置 129
5.5.2 剪裁的光柵位置 130
5.5.3 啟用紋理或霧化 130
5.5.4 深度測試 131
5.5.5 像素數據對齊 131
5.5.6 被遮擋的窗口 132
5.5.7 記憶體分配問題 132
5.6 更多資訊 133
5.7 參考文獻 133
第 6 章 紋理映射 135
6.1 使用紋理圖 136
6.1.1 紋理物件 138
6.1.2 紋理坐標 145
6.1.3 多重紋理 150
6.1.4 紋理映射範例 153
6.2 使用紋理的照明和陰影 157
6.2.1 靜態照明 158
6.2.2 光照圖 160
6.2.3 深度圖 162
6.2.4 鏡面高光 167
6.2.5 環境圖 170
6.3 除錯 173
6.3.1 OpenGL 錯誤代碼 173
6.3.2 紋理狀態 174
6.3.3 紋理完整性 175
6.3.4 缺失的紋理 176
6.3.5 反轉的紋理 177
6.4 更多資訊 178
6.5 參考文獻 179
第 7 章 擴展與版本 181
7.1 擴展 182
7.1.1 查詢擴展 184
7.1.2 獲取和調用擴展命令 185
7.2 版本 188
7.3 擴展和版本安全代碼 190
7.4 更多資訊 194
第 8 章 平台特定介面 197
8.1 概念 198
8.2 Apple Mac OS X 199
8.2.1 創建上下文 200
8.2.2 使用上下文 202
8.2.3 交換緩衝區 203
8.2.4 刪除上下文 203
8.3 Linux 203
8.3.1 創建上下文 204