內容簡介
OpenGL編程基礎(第3版)簡明扼要地介紹OpenGL基礎知識,並列出基礎的OpenGL函數及參數,使讀者能在短時間內充分理解基本的OpenGL命令。Angel采用一種自上而下的體系來講解計算機圖形學,讓讀者從動手編寫程序的角度能盡快學習現代化計算機圖形學方面的知識。本書既可當作計算機圖形學教材的配套教參,供計算機專業學生使用,也可以單獨作為OpenGL編程教程,供有一定計算機圖形背景的程序員參考。
目錄
第1章 緒論
1.1 OpenGL API
1.2 關于OpenGL的三種觀點
1.2.1 程序員的觀點
1.2.2 OpenGL狀態機
1.2.3 OpenGL繪制流水線
1.3 OpenGL的組成
1.4 OpenGL的版本和擴展
1.5 語言
1.6 編程約定
1.7 編譯
1.8 資源
1.9 本書的適用對象
1.10 全書概覽
第2章 OpenGL中的二維編程
2.1 一個簡單的示例程序
2.2 GLUT
2.3 事件循環和回調函數
2.4 矩形的繪制
2.5 修改GLUT中的默認值
2.6 OpenGL中的顏色
2.6.1 顏色的設置
2.6.2 顏色和狀態
2.7 OpenGL和GLUT坐標系之間的差異
2.8 二維取景
2.9 視口
2.10 坐標系與變換
2.11 simple.c(第2版)
2.12 圖元及其屬性
2.12.1 點
2.12.2 直線
2.12.3 啟用OpenGL特性
2.12.4 填充的圖元
2.12.5 矩形
2.12.6 多邊形的點劃模式
2.13 多邊形類型
2.14 顏色插值
2.14.1 離散處理與邊標記
2.14.2 離散化與細分
2.15 文本
2.16 查詢與錯誤
2.17 狀態的保存
2.18 編程練習
第3章 交互與動畫
3.1 重繪回調函數
3.2 Idle回調函數
3.3 一個旋轉的矩形
3.4 雙緩存
3.5 鍵盤的使用
3.6 鼠標回調函數的使用
3.7 鼠標的移動
3.8 菜單
3.9 NULL回調函數
3.10 子窗口與多窗口
3.11 例程︰single—double.c
3.12 顯示列表
3.12.1 多個顯示列表
3.12.2 顯示列表與文本
3.12.3 顯示列表與對象
3.13 拾取和選擇模式
3.14 編程練習
第4章 三維編程基礎
4.1 攝像機與對象
4.2 OpenGL中的正交投影
4.3 觀察一個立方體
4.4 攝像機的定位
4.5 對象的牛成
4.5.1 數組的使用
4.5.2 頂點數組
4.6 消隱
4.7 GLU與GLUT對象
4.7.1 GLU二次曲面
4.7.2 GLUT對象
4.8 透視投影
4.9 編程練習
第5章 幾何變換
5.1 線性變換
5.2 齊次坐標
5.3 模型-視圖變換與投影變換
5.4 平移
5.5 旋轉變換
5.6 比例變換
5.7 一個旋轉的立方體
5.8 直接設置矩陣
5.9 變換與坐標系
5.10 基于變換的建模
5.10.1 實例化
5.10.2 層次模型
5.11 編程練習
第6章 光照與材質
6.1 光照與材質之間的交互
6.2 Phong模型
6.2.1 漫反射
6.2.2 鏡面反射
6.2.3 環境反射
6.2.4 發射光
6.3 OpenGL中的光照
6.4 光源的指定
6.5 材質的指定
6.6 旋轉立方體的明暗計算
6.7 對明暗計算的控制
6.8 平滑著色
6.9 法線的處理
6.10 透明度
6.11 編程練習
第7章 離散圖元
7.1 像素和位圖
7.2 位圖
7.2.1 位圖的顯示
7.2.2 位圖和幾何圖元的融合
7.2.3 顏色與模板
7.3 繪制模式
7.4 像素的讀/寫
7.4.1 像素的寫操作
7.4.2 像素的讀取
7.4.3 像素的復制
7.5 緩存的選擇
7.6 像素存儲模式
7.7 PPM圖像的顯示
7.8 灰度圖像的使用
7.9 像素映射
7.10 像素的縮放
7.11 OpenGL中的圖像處理
7.12 編程練習
第8章 紋理映射
8.1 什麼是紋理映射
8.2 紋理圖的創建
8.3 紋理坐標
8.4 紋理參數
8.5 一個帶有紋理的旋轉立方體
8.6 將紋理映射到表面
8.7 邊界與尺寸調整
8.8 多級漸進紋理
8.9 紋理坐標的自動生成
8.10 紋理對象
8.11 用于圖像操作的紋理圖
8.12 編程練習
第9章 曲線與曲面
9.1 參數曲線
9.2 參數曲面
9.3 貝塞爾曲線和曲面
9.4 一維OpenGL求值器
9.5 二維求值器
9.6 一個交互式例程
9.7 其他類型的曲線
9.7.1 B樣條
9.7.2 NURBS曲線
9.8 猶他壺
9.9 法向量與明暗
9.10 為表面映射紋理
9.11 編程練習
第10章 OpenGL著色語言
10.1 對流水線的回顧
10.2 著色器與著色語言
10.2.1 RenderMan
10.2.2 Cg與GLSL
10.3 GLSL
10.3.1 執行模型
10.3.2 一個簡單的頂點著色器
10.3.3 一個簡單的片段著色器
10.4 GLSL語言基礎
10.4.1 限定符
10.4.2 運算符
10.4.3 控制結構
10.4.4 內置函數
10.4.5 采樣器
10.5 建立與應用程序之間的接口
10.5.1 著色器對象的創建
10.5.2 著色器的讀取和編譯
10.5.3 編譯和連接
10.5.4 錯誤檢查
10.5.5 將數據送入著色器
10.6 頂點著色器示例
10.7 片段著色器示例
第11章 總結與展望
11.1 OpenGL各版本及擴展
11.1.1 OpenGL 1.1版本
11.1.2 OpenGL 1.2版本
11.1.3 OpenGL 1.3版本
11.1.4 OpenGL 1.4版本
11.1.5 OpenGL 1.5版本
11.1.6 OpenGL 2.0版本
11.1.7 OpenGL 2.1版本
11.2 OpenGL擴展
11.3 一些附加的OpenGL特性
11.4 其他緩存
11.4.1 累積緩存
11.4.2 模板緩存
11.4.3 片段測試
11.5 編寫可移植、高效而又健壯的代碼
索引
1.1 OpenGL API
1.2 關于OpenGL的三種觀點
1.2.1 程序員的觀點
1.2.2 OpenGL狀態機
1.2.3 OpenGL繪制流水線
1.3 OpenGL的組成
1.4 OpenGL的版本和擴展
1.5 語言
1.6 編程約定
1.7 編譯
1.8 資源
1.9 本書的適用對象
1.10 全書概覽
第2章 OpenGL中的二維編程
2.1 一個簡單的示例程序
2.2 GLUT
2.3 事件循環和回調函數
2.4 矩形的繪制
2.5 修改GLUT中的默認值
2.6 OpenGL中的顏色
2.6.1 顏色的設置
2.6.2 顏色和狀態
2.7 OpenGL和GLUT坐標系之間的差異
2.8 二維取景
2.9 視口
2.10 坐標系與變換
2.11 simple.c(第2版)
2.12 圖元及其屬性
2.12.1 點
2.12.2 直線
2.12.3 啟用OpenGL特性
2.12.4 填充的圖元
2.12.5 矩形
2.12.6 多邊形的點劃模式
2.13 多邊形類型
2.14 顏色插值
2.14.1 離散處理與邊標記
2.14.2 離散化與細分
2.15 文本
2.16 查詢與錯誤
2.17 狀態的保存
2.18 編程練習
第3章 交互與動畫
3.1 重繪回調函數
3.2 Idle回調函數
3.3 一個旋轉的矩形
3.4 雙緩存
3.5 鍵盤的使用
3.6 鼠標回調函數的使用
3.7 鼠標的移動
3.8 菜單
3.9 NULL回調函數
3.10 子窗口與多窗口
3.11 例程︰single—double.c
3.12 顯示列表
3.12.1 多個顯示列表
3.12.2 顯示列表與文本
3.12.3 顯示列表與對象
3.13 拾取和選擇模式
3.14 編程練習
第4章 三維編程基礎
4.1 攝像機與對象
4.2 OpenGL中的正交投影
4.3 觀察一個立方體
4.4 攝像機的定位
4.5 對象的牛成
4.5.1 數組的使用
4.5.2 頂點數組
4.6 消隱
4.7 GLU與GLUT對象
4.7.1 GLU二次曲面
4.7.2 GLUT對象
4.8 透視投影
4.9 編程練習
第5章 幾何變換
5.1 線性變換
5.2 齊次坐標
5.3 模型-視圖變換與投影變換
5.4 平移
5.5 旋轉變換
5.6 比例變換
5.7 一個旋轉的立方體
5.8 直接設置矩陣
5.9 變換與坐標系
5.10 基于變換的建模
5.10.1 實例化
5.10.2 層次模型
5.11 編程練習
第6章 光照與材質
6.1 光照與材質之間的交互
6.2 Phong模型
6.2.1 漫反射
6.2.2 鏡面反射
6.2.3 環境反射
6.2.4 發射光
6.3 OpenGL中的光照
6.4 光源的指定
6.5 材質的指定
6.6 旋轉立方體的明暗計算
6.7 對明暗計算的控制
6.8 平滑著色
6.9 法線的處理
6.10 透明度
6.11 編程練習
第7章 離散圖元
7.1 像素和位圖
7.2 位圖
7.2.1 位圖的顯示
7.2.2 位圖和幾何圖元的融合
7.2.3 顏色與模板
7.3 繪制模式
7.4 像素的讀/寫
7.4.1 像素的寫操作
7.4.2 像素的讀取
7.4.3 像素的復制
7.5 緩存的選擇
7.6 像素存儲模式
7.7 PPM圖像的顯示
7.8 灰度圖像的使用
7.9 像素映射
7.10 像素的縮放
7.11 OpenGL中的圖像處理
7.12 編程練習
第8章 紋理映射
8.1 什麼是紋理映射
8.2 紋理圖的創建
8.3 紋理坐標
8.4 紋理參數
8.5 一個帶有紋理的旋轉立方體
8.6 將紋理映射到表面
8.7 邊界與尺寸調整
8.8 多級漸進紋理
8.9 紋理坐標的自動生成
8.10 紋理對象
8.11 用于圖像操作的紋理圖
8.12 編程練習
第9章 曲線與曲面
9.1 參數曲線
9.2 參數曲面
9.3 貝塞爾曲線和曲面
9.4 一維OpenGL求值器
9.5 二維求值器
9.6 一個交互式例程
9.7 其他類型的曲線
9.7.1 B樣條
9.7.2 NURBS曲線
9.8 猶他壺
9.9 法向量與明暗
9.10 為表面映射紋理
9.11 編程練習
第10章 OpenGL著色語言
10.1 對流水線的回顧
10.2 著色器與著色語言
10.2.1 RenderMan
10.2.2 Cg與GLSL
10.3 GLSL
10.3.1 執行模型
10.3.2 一個簡單的頂點著色器
10.3.3 一個簡單的片段著色器
10.4 GLSL語言基礎
10.4.1 限定符
10.4.2 運算符
10.4.3 控制結構
10.4.4 內置函數
10.4.5 采樣器
10.5 建立與應用程序之間的接口
10.5.1 著色器對象的創建
10.5.2 著色器的讀取和編譯
10.5.3 編譯和連接
10.5.4 錯誤檢查
10.5.5 將數據送入著色器
10.6 頂點著色器示例
10.7 片段著色器示例
第11章 總結與展望
11.1 OpenGL各版本及擴展
11.1.1 OpenGL 1.1版本
11.1.2 OpenGL 1.2版本
11.1.3 OpenGL 1.3版本
11.1.4 OpenGL 1.4版本
11.1.5 OpenGL 1.5版本
11.1.6 OpenGL 2.0版本
11.1.7 OpenGL 2.1版本
11.2 OpenGL擴展
11.3 一些附加的OpenGL特性
11.4 其他緩存
11.4.1 累積緩存
11.4.2 模板緩存
11.4.3 片段測試
11.5 編寫可移植、高效而又健壯的代碼
索引
序
我們常常會驚嘆于中震撼人心的電影場景和無比逼真的游戲畫面,在享受這些前所未有的視覺沖擊的同時,難免會讓人聯想到到底是什麼力量在幕後提供支撐。毋庸置疑,這一切都應歸功于計算機三維圖形學領域所取得的最新成果。
目前,以科學計算可視化、計算機動畫和虛擬現實技術為主題的三維圖形技術已經在軍事、航空、航天、醫學、地質勘探、文化娛樂以及藝術造型等領域得到了廣泛的應用。每種快速發展的技術—定擁有強大工具的支持,正所謂“工欲善其事,必先利其器”。計算機圖形學當然也不例外。OpenGL是一個優秀的三維圖形硬件的軟件接口,同時也是一個跨平台的、開放性的三維圖形和模型庫。
自1992年OpenGL正式成為適于各種計算機環境下的三維應用程序接口以來,它便得到計算機行業巨頭的極大關注和支持,先後涌現了大批支持OpenGL的圖形卡,為計算機硬件的迅速更新起到了推波助瀾的作用。它的出現,極大地增強了圖形工作者的生產力,使他們從以往充滿艱辛的工作中解脫出來,站在更高的抽象層次來思考和解決問題。計算機圖形學的發展推動了OpenGL的持續發展和不斷更新,可以說OpenGL API的每個新版本都體現了當時圖形學發展的最高水平。目前,OpenGL在專業繪圖和科研領域仍然是佔據統治地位的API,在游戲開發領域也具有極其重要的位置。 ’
本書的作者Edward Angel是一位有著多年豐富圖形學教學經驗的教授,除了在大學授課之外,他還曾經給來自世界各地的數以千計的科學家、工程師和程序員講授計算機圖形學方面的課程,並多次在計算機圖形學領域的最高級別會議SIGGRAPH上講授OpenGL。正是這種授課對象的極端復雜性促使作者對傳統的授課理念進行深入的反思和創新,因而大膽地在課堂中采用自頂向下、面向編程的方法來講授計算機圖形學。這種方式使得該門課程一開始便充滿了趣味性,充分調動了學生的學習興趣,使他們一開始就可以動手編寫出具有一定難度的三維程序。如此一來,很容易使他們產生成就感並激發進一步深入學習的熱情。事實證明,這種方式收到了非常良好的效果。令我�門感到高興的是,作者把他的這種教學理念也完全體現在本書的內容編排之中。相信讀者朋友在閱讀本書時也會從這種理念中獲得愉悅的學習體驗。
閱讀本書,並不需要太多的先修知識,您只需具有一定的圖形學基礎,並且熟悉C語言的基本語法以及具備基本的線性代數基礎α口向量、矩陣的基本運算)即可。本書的突出特點是實踐性較強、自成體系,是迅速了解OpenGL編程的捷徑之一。但須知,只有在實踐中不斷總結、不斷加強鞏固和加深對相關的理論的理解,才能在圖形學之路上漸行漸遠,修煉成真正的高手,從而真正做到以不變應萬變。
……
目前,以科學計算可視化、計算機動畫和虛擬現實技術為主題的三維圖形技術已經在軍事、航空、航天、醫學、地質勘探、文化娛樂以及藝術造型等領域得到了廣泛的應用。每種快速發展的技術—定擁有強大工具的支持,正所謂“工欲善其事,必先利其器”。計算機圖形學當然也不例外。OpenGL是一個優秀的三維圖形硬件的軟件接口,同時也是一個跨平台的、開放性的三維圖形和模型庫。
自1992年OpenGL正式成為適于各種計算機環境下的三維應用程序接口以來,它便得到計算機行業巨頭的極大關注和支持,先後涌現了大批支持OpenGL的圖形卡,為計算機硬件的迅速更新起到了推波助瀾的作用。它的出現,極大地增強了圖形工作者的生產力,使他們從以往充滿艱辛的工作中解脫出來,站在更高的抽象層次來思考和解決問題。計算機圖形學的發展推動了OpenGL的持續發展和不斷更新,可以說OpenGL API的每個新版本都體現了當時圖形學發展的最高水平。目前,OpenGL在專業繪圖和科研領域仍然是佔據統治地位的API,在游戲開發領域也具有極其重要的位置。 ’
本書的作者Edward Angel是一位有著多年豐富圖形學教學經驗的教授,除了在大學授課之外,他還曾經給來自世界各地的數以千計的科學家、工程師和程序員講授計算機圖形學方面的課程,並多次在計算機圖形學領域的最高級別會議SIGGRAPH上講授OpenGL。正是這種授課對象的極端復雜性促使作者對傳統的授課理念進行深入的反思和創新,因而大膽地在課堂中采用自頂向下、面向編程的方法來講授計算機圖形學。這種方式使得該門課程一開始便充滿了趣味性,充分調動了學生的學習興趣,使他們一開始就可以動手編寫出具有一定難度的三維程序。如此一來,很容易使他們產生成就感並激發進一步深入學習的熱情。事實證明,這種方式收到了非常良好的效果。令我�門感到高興的是,作者把他的這種教學理念也完全體現在本書的內容編排之中。相信讀者朋友在閱讀本書時也會從這種理念中獲得愉悅的學習體驗。
閱讀本書,並不需要太多的先修知識,您只需具有一定的圖形學基礎,並且熟悉C語言的基本語法以及具備基本的線性代數基礎α口向量、矩陣的基本運算)即可。本書的突出特點是實踐性較強、自成體系,是迅速了解OpenGL編程的捷徑之一。但須知,只有在實踐中不斷總結、不斷加強鞏固和加深對相關的理論的理解,才能在圖形學之路上漸行漸遠,修煉成真正的高手,從而真正做到以不變應萬變。
……
網路書店
類別
折扣
價格
-
新書87折$183