出版時間:2012-5 出版社:電子工業(yè)出版社 作者:Edward Angel,Dave Shreiner 頁數(shù):493 字數(shù):903000
Tag標簽:無
前言
第六版新增內(nèi)容 ●全書使用基于著色器的新版本OpenGL ●不再使用在OpenGL 3.1中所棄用的OpenGL函數(shù) ●在OpenGL應(yīng)用程序代碼和著色器中均增加了實現(xiàn)變換和觀察的細節(jié)描述 ●保持與penGL ES 2.0和WebGL的一致性 ●用C++代替了C ●增加了向量類和矩陣類以創(chuàng)建與OpenGL著色語言(GLSL)兼容的應(yīng)用程序代碼 ●討論了基于頂點的光照計算和基于片元的光照計算 ●增加了多邊形的三角細分和Delaunay三角剖分 ●介紹了體繪制 ●重新編寫了所有示例程序的代碼以適合OpenGL 3.1 ●增加了新合著者,《OpenGL編程指南》的作者Dave Shreiner 本書是計算機圖形學(xué)的入門教材,重點介紹應(yīng)用程序的編寫。本書于1997年首次出版,第一版在使用標準圖形庫和自頂向下的方法上多多少少是一場革命。在接下來的13年中,發(fā)行了5個版本,大多數(shù)計算機圖形學(xué)概論課以及幾乎所有的教科書都采用了本書的方法?! ≡谶^去的幾年中,圖形硬件的重大變化已經(jīng)導(dǎo)致了圖形軟件的重大變化。在OpenGL的前15年,新版本的發(fā)布一直保持向后兼容,基礎(chǔ)軟件的升級使代碼的可重用能力成為重要的優(yōu)點,應(yīng)用軟件的開發(fā)者和圖形學(xué)課程的教師都在受益。從所公布的OpenGL 3.0重大變化來看,其中一個關(guān)鍵的變化是從OpenGL 3.1開始,許多先前版本中最常見的函數(shù)將被廢棄。相對于先前版本的這一根本變化反映出需要使用最新的可編程圖形處理單元(GPU)的功能變化,這些變化也是OpenGL ES 2.0和WebGL的一部分,OpenGL ES 2.0用于開發(fā)手機和圖形輸入板等移動終端設(shè)備的應(yīng)用軟件,而WebGL支持大多數(shù)最新的瀏覽器。 就像本書以前5個版本的作者(Edward Angel)以及《OpenGL編程指南》和《OpenGL ES 2.0編程指南》的作者(Dave Shreiner)一樣,我們面臨著如何反映這些變化的難題。我們撰寫了多部書籍并在ACM SIGGRAPH中多年從事OpenGL導(dǎo)論課程的教學(xué),我們發(fā)現(xiàn)在高等教育界或高端游戲領(lǐng)域之外的應(yīng)用程序編程人員,幾乎沒有人了解這些變化,知道這些變化的人并不認為我們可以在初級層次教會這些概念。
內(nèi)容概要
《交互式計算機圖形學(xué)——基于OpenGL著色器的自頂向下方法(第6版)
》采用自頂向下的方法并輔以面向編程的方式,基于現(xiàn)代可編程GPU的著色器編程,使用C++語言、OpenGL著色語言(GLSL)并結(jié)合OpenGL系統(tǒng)地介紹了現(xiàn)代計算機圖形學(xué)的核心概念、原理和方法?!督换ナ接嬎銠C圖形學(xué)——
基于OpenGL著色器的自頂向下方法(第6版)》是作者(安杰爾)多年來教學(xué)與科研工作的總結(jié),涵蓋了基于OpenGL著色器的交互式圖形編程、三維可編程繪制流水線、變換與觀察、光照與明暗繪制、曲線曲面建模等基本的計算機圖形學(xué)內(nèi)容以及離散技術(shù)、層級建模、過程建模、光線跟蹤、并行繪制和體繪制等高級內(nèi)容,并為讀者進一步深入學(xué)習(xí)和研究,在每章后面提供了相關(guān)的建議閱讀資料。
本書第六版進一步反映了計算機圖形學(xué)的最新發(fā)展現(xiàn)狀,面向圖形應(yīng)用開發(fā)并輔以大量的示例和完整的源代碼,是一本“基礎(chǔ)性與先進性、理論性與應(yīng)用性、科學(xué)性與通俗性”相結(jié)合的內(nèi)容全面而又系統(tǒng)的國外經(jīng)典計算機圖形學(xué)教材。
作者簡介
作者:(美國)愛德華?安杰爾 (Edward Angel) (美國)戴夫?斯賴納 (Dave Shreiner) 譯者:張榮華 宋雨 劉書剛 等
書籍目錄
第1章 圖形系統(tǒng)和模型
1.1 計算機圖形學(xué)的應(yīng)用
1.2 圖形系統(tǒng)
1.3 物理圖像與合成圖像
1.4 成像系統(tǒng)
1.5 虛擬照相機模型
1.6 應(yīng)用程序編程接口
1.7 圖形繪制系統(tǒng)的體系結(jié)構(gòu)
1.8 可編程流水線
1.9 性能特征
小結(jié)和注釋
建議閱讀資料
習(xí)題
第2章 圖形學(xué)編程
2.1 Sierpiki鏤墊
2.2 編寫二維圖形應(yīng)用程序
2.3 OpenGL應(yīng)用程序編程接口
2.4 圖元和屬性
2.5 顏色
2.6 觀察
2.7 控制函數(shù)
2.8 Sierpiki鏤墊繪制程序
2.9 多邊形和遞歸
2.10 三維Sierpiki鏤墊
2.11 增加交互性
2.12 菜單
小結(jié)和注釋
建議閱讀資料
習(xí)題
第3章 幾何對象和變換
3.1 標量、點和向量
3.2 三維圖元
3.3 坐標系和標架
3.4 OpenGL中的標架
3.5 矩陣和向量類
3.6 建模一個彩色立方體
3.7 仿射變換
3.8 平移、旋轉(zhuǎn)和縮放
3.9 變換的齊次坐標表示
3.10 變換的級聯(lián)
3.11 OpenGL變換矩陣
3.12 使立方體旋轉(zhuǎn)起來
3.13 三維應(yīng)用程序的接口
3.14 四元數(shù)
小結(jié)和注釋
建議閱讀資料
習(xí)題
第4章 觀察
4.1 經(jīng)典觀察和計算機觀察
4.2 計算機觀察
4.3 定位照相機
4.4 平行投影
4.5 透視投影
4.6 OpenGL中的透視投影
4.7 透視投影變換矩陣
4.8 隱藏面消除
4.9 顯示網(wǎng)格
4.10 投影和陰影
小結(jié)和注釋
建議閱讀資料
習(xí)題
第5章 光照和明暗繪制
5.1 光線和材質(zhì)
5.2 光源
5.3 Phong反射模型
5.4 計算向量
5.5 多邊形的明暗繪制
5.6 通過遞歸細分逼近球面
5.7 指定光照參數(shù)
5.8 實現(xiàn)光照模型
5.9 球面模型的明暗繪制
5.10 基于每個片元的光照計算
5.11 全局光照
小結(jié)和注釋
建議閱讀資料
習(xí)題
第6章 從頂點到片元
6.1 圖形繪制流水線的基本實現(xiàn)策略
6.2 圖形繪制系統(tǒng)的四個主要任務(wù)
6.3 裁剪
6.4 線段的裁剪
6.5 多邊形的裁剪
6.6 其他圖元的裁剪
6.7 三維裁剪
6.8 光柵化
6.9 Bresenham算法
6.10 多邊形光柵化算法
6.11 隱藏面消除
6.12 反走樣
6.13 顯示方面的問題
小結(jié)和注釋
建議閱讀資料
習(xí)題
第7章 離散技術(shù)
7.1 緩存
7.2 數(shù)字圖像
7.3 緩存的寫操作
7.4 映射方法
7.5 紋理映射
7.6 OpenGL的紋理映射
7.7 紋理生成
7.8 環(huán)境貼圖
7.9 反射貼圖示例程序
7.10 凹凸映射
7.11 合成技術(shù)
7.12 采樣與走樣
小結(jié)和注釋
建議閱讀資料
習(xí)題
第8章 層級建模方法
8.1 圖符和實例
8.2 層級模型
8.3 機器人手臂
8.4 樹與樹的遍歷
8.5 使用樹形數(shù)據(jù)結(jié)構(gòu)
8.6 動畫
8.7 圖形對象
8.8 場景圖
8.9 開放場景圖
8.10 圖形和因特網(wǎng)
8.11 其他樹形結(jié)構(gòu)
小結(jié)和注釋
建議閱讀資料
習(xí)題
第9章 過程建模方法
9.1 基于算法的建模
9.2 基于物理的建模和粒子系統(tǒng)
9.3 牛頓粒子
9.4 求解粒子系統(tǒng)方程
9.5 約束條件
9.6 一個簡單的粒子系統(tǒng)
9.7 基于語言的建模
9.8 遞歸方法和分形
9.9 過程噪聲
小結(jié)和注釋
建議閱讀資料
習(xí)題
第10章 曲線和曲面
10.1 曲線和曲面的表示形式
10.2 設(shè)計準則
10.3 三次參數(shù)多項式曲線
10.4 插值
10.5 Hermite曲線和曲面
10.6 Bézier曲線和曲面
10.7 三次B樣條
10.8 普通B樣條
10.9 曲線和曲面的繪制
10.10 Utah茶壺模型
10.11 代數(shù)曲面
10.12 曲線和曲面的細分
10.13 從數(shù)據(jù)生成網(wǎng)格
小結(jié)和注釋
建議閱讀資料
習(xí)題
第11章 高級繪制
11.1 超越流水線繪制結(jié)構(gòu)
11.2 光線跟蹤
11.3 構(gòu)建一個簡單的光線跟蹤器
11.4 繪制方程
11.5 輻射度方法
11.6 RenderMan
11.7 并行繪制
11.8 體繪制
11.9 等值面與步進立方體
11.10 網(wǎng)格簡化
11.11 直接體繪制
11.12 基于圖像的繪制
小結(jié)和注釋
建議閱讀資料
習(xí)題
附錄A 示例程序
A.1 著色器初始化函數(shù)
A.2 Sierpiki鏤墊程序
A.3 遞歸實現(xiàn)Sierpiki鏤墊程序
A.4 在著色器中實現(xiàn)立方體的旋轉(zhuǎn)
A.5 透視投影
A.6 旋轉(zhuǎn)著色的立方體
A.7 對球面模型執(zhí)行基于每個片元的光照計算
A.8 帶紋理的立方體旋轉(zhuǎn)程序
A.9 基于樹形結(jié)構(gòu)的機器人繪制程序
A.10 茶壺繪制程序
附錄B 空間
B.1 標量
B.2 向量空間
B.3 仿射空間
B.4 Euclid空間
B.5 投影
B.6 GRAM?SCHMIDT正交化
建議閱讀資料
習(xí)題
附錄C 矩陣
C.1 定義
C.2 矩陣的運算
C.3 行矩陣和列矩陣
C.4 秩
C.5 表示的變換
C.6 叉積
C.7 特征值和特征向量
C.8 向量和矩陣類
建議閱讀資料
習(xí)題
附錄D OpenGL函數(shù)一覽
D.1 初始化和窗口函數(shù)
D.2 頂點緩沖區(qū)對象
D.3 交互函數(shù)
D.4 屬性設(shè)置和功能開啟函數(shù)
D.5 紋理和圖像函數(shù)
D.6 狀態(tài)和緩存操作函數(shù)
D.7 查詢函數(shù)
D.8 GLSL函數(shù)
參考文獻
章節(jié)摘錄
版權(quán)頁:插圖:1.2.7 輸入模式計算機圖形學(xué)除了具有各種不同類型的輸入設(shè)備這個特征外,各種設(shè)備給應(yīng)用程序提供輸入的方式比只使用鍵盤的簡單c和C++程序要多得多。物理和邏輯輸入設(shè)備向應(yīng)用程序提供輸入的方式可以從兩個方面來描述:測量過程和設(shè)備觸發(fā)器。一個設(shè)備的測量(measure)是這個設(shè)備返回給用戶程序的數(shù)據(jù)。設(shè)備的觸發(fā)器(trigger)是用戶向這個設(shè)備提供的一個物理輸入,通過它用戶能夠給計算機傳送觸發(fā)信號。例如,鍵盤的測量數(shù)據(jù)應(yīng)該包含一個字符串,觸發(fā)器可以是Re-turn或者Enter鍵。對于定位設(shè)備,測量數(shù)據(jù)包含定位設(shè)備的位置,相應(yīng)的觸發(fā)器可以是定位設(shè)備上的一個按鈕。我們可以通過三種不同的模式獲得一個設(shè)備的測量數(shù)據(jù),每種模式都是由測量過程和觸發(fā)器之間的關(guān)系來定義的。測量過程一旦開始,輸入設(shè)備就會獲取測量數(shù)據(jù)并把它存儲在一個緩存、中,即使應(yīng)用程序可能還不能訪問該緩存中的內(nèi)容。例如,不管應(yīng)用程序是否需要鼠標輸入,窗口系統(tǒng)總是連續(xù)不斷地跟蹤鼠標的位置。在請求模式(requestmode)下,除非設(shè)備被觸發(fā),否則設(shè)備的測量數(shù)據(jù)不會返回給程序。請求模式在非圖形應(yīng)用程序中是標準的輸入模式。這種模式是非圖形應(yīng)用程序使用的標準輸入模式。例如,如果一個典型的c程序需要字符輸人,使用像scanf這樣的函數(shù)。當程序需要輸人時,它在執(zhí)行到scanf語句時暫停并且等待,直到在終端上鍵人字符??梢酝ㄟ^退格來更正所鍵人的字符,并且可以花費任意長的時間來鍵人字符。數(shù)據(jù)存儲在一個鍵盤緩存中,只有當我們按下一個特定的鍵,比如Enter鍵(觸發(fā)器),這個緩存中的內(nèi)容才會返回給我們的程序。對于像定位設(shè)備這樣的邏輯設(shè)備,可以把指向設(shè)備移到所需的位置上,然后用它的按鈕觸發(fā)它,這個觸發(fā)會讓應(yīng)用程序獲得定位設(shè)備的位置。在采樣模式(samplemode)下,輸人是即時的。只要在用戶程序中遇到了函數(shù)調(diào)用,就把測量數(shù)據(jù)返回給程序,因此不需要觸發(fā)器。在采樣模式中,用戶必須在函數(shù)調(diào)用之前就把定位設(shè)備放置好或者用鍵盤把數(shù)據(jù)輸入完畢,因為緩存中的測量數(shù)據(jù)會立即返回給應(yīng)用程序。在支持請求模式和采樣模式的API中,這兩種模式的輸人有一個共同特征就是用戶必須識別出提供輸入的那個設(shè)備。因此,除了指定的這個輸人設(shè)備以外,我們忽略其他任何輸入設(shè)備提供的任何其他信息。請求模式和采樣模式對于通過程序來引導(dǎo)用戶的情形都是有用的,但對于用戶控制程序流程的情形就不是很有用了。例如,飛行模擬器或者計算機游戲可能有多個輸入設(shè)備,比如操縱桿、刻度盤、按鈕和開關(guān),等等,我們在任何時刻都可以使用其中的大多數(shù)設(shè)備。要編寫控制飛行模擬器的程序,只利用采樣模式和請求模式輸入幾乎是不可能的,因為我們不知道在仿真過程中的某個時刻飛行員會使用什么設(shè)備。更一般地,在現(xiàn)代計算環(huán)境中可能出現(xiàn)的人機交互有多種多樣,要處理這些交互方式,光有采樣輸入模式和請求輸入模式是不夠的。
編輯推薦
《交互式計算機圖形學(xué):基于OpenGL著色器的自頂向下方法(第6版)》第六版進一步反映了計算機圖形學(xué)的最新發(fā)展現(xiàn)狀,面向圖形應(yīng)用開發(fā)并輔以大量的示例和完整的源代碼,是一本“基礎(chǔ)性與先進性、理論性與應(yīng)用性、科學(xué)性與通俗性”相結(jié)合的內(nèi)容全面而又系統(tǒng)的國外經(jīng)典計算機圖形學(xué)教材。《交互式計算機圖形學(xué):基于OpenGL著色器的自頂向下方法(第6版)》既可作為有一定C++編程基礎(chǔ)的計算機及相關(guān)專業(yè)高年級本科生或研究生的計算機圖形學(xué)教材,也適合于作為相關(guān)技術(shù)人員的參考書。
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載