華章程序員書庫:OpenGL編程指南(原書第8版) [OpenGL Programming Guide] pdf epub mobi txt 電子書 下載
內容簡介
《華章程序員書庫:OpenGL編程指南(原書第8版)》是由Khronos小組編寫的官方指南,是OpenGL領域的專業著作,素有“OpenGL”的美譽。第8版針對OpenGL4.3版本全方位闡釋OpenGL的各種技術細節、方法和佳實踐,幫助程序員走上OpenGL專傢之路。
《華章程序員書庫:OpenGL編程指南(原書第8版)》共12章:第1章概述OpenGL主要特性和功能;第2章討論OpenGL中主要的特性——可編程著色器;第3章介紹使用OpenGL進行幾何體繪製的各種方法,以及一些可以讓渲染更為高效的優化手段;第4章闡釋OpenGL對於顔色的處理過程,包括像素的處理、緩存的管理以及像素處理相關的渲染技術;第5章介紹在一個二維計算機屏幕上錶現三維場景的操作細節;第6章討論將幾何模型與圖像結閤來創建真實的、高質量的三維模型的方法;第7章介紹計算機圖形的光照效果模擬方法;第8章介紹使用可編程著色器生成紋理和其他錶麵效果的方法細節;第9章解釋OpenGL管理和細分幾何錶麵的著色器功能;第10章介紹在OpenGL渲染管綫中使用著色器進行幾何體圖元修改的特彆技術;第1l章介紹使用OpenGL幀緩存和緩存內存實現高級渲染技術和非圖形學應用的相關方法;第12章介紹瞭新的著色器階段,將通用計算的方法融閤到OpenGL的渲染管綫當中。
作者簡介
施萊爾(Dave Shreiner),ARM公司的圖形與GPU計算部門主管,自從OpenGL誕生之日起就積極地參與到它的開發當中。他創建瞭個OpenGL的商業培訓課程,並且擁有超過20年的OpenGL編程教學經驗。
Graham Sellers,《OpenGL超級寶典》的聯閤作者,在AMD負責OpenGL的軟件開發。他同時還是很多OpenGL特性規範的作者,並且協助將OpenGL ES移植到桌麵計算機平颱。
John Kessenich,OpenGL著色語言的規範編者,LunarG公司的顧問,負責GLSL的編譯器技術。他在3DLabs和Intel幫助下開發瞭OpenGL 2.0和OpenGL ES 2.0。
Bill Licea-Kane,AMD的技術部門核心成員,《OpenGL Shading Language Guide》的聯閤作者,OpenGL著色語言技術子部門的負責人。
內頁插圖
精彩書評
★“這是一本一站式服務的OpenGL書籍。它就是我夢寐以求的那種圖書。感謝Dave、Graham、John和Bill,感謝你們作齣的瞭不起的貢獻。”
——Mike Bailey,俄勒岡州立大學教授
★“OpenGL在這20年來已經有瞭巨大的發展。這次的修訂版是一本學習使用現代OpenGL的實用指南書。現代OpenGL側重於著色器的使用,而這一版的編程指南準確地對應瞭這一點,它在第2章對於著色器進行瞭深入的敘述。而後繼的章節裏,它繼續深入到方方麵麵,從紋理到計算著色器。無論你對OpenGL瞭解多少,或者你準備深入到何種程度,隻要你準備開始編寫OpenGL程序,你就一定需要《OpenGL編程指南》這本手邊書。”
——Marc Olano,UMBC副教授
★“如果你正在尋找有關OpenGL新版的編程專業指南,那麼你已經找到瞭。本書的作者深入參與瞭OpenGL 4.3標準的創立,而這本書中恰恰包含瞭你所需要瞭解的一切,它將使用一種清晰的、富有邏輯性和見解性的方式,介紹這個行業領先的API標準新知識。”
——Neil Trevett,Khronos Group總裁
目錄
推薦語
譯者序
前言
第1章 OpenGL概述
1.1 什麼是OpenGL
1.2 初識OpenGL程序
1.3 OpenGL語法
1.4 OpenGL渲染管綫
1.4.1 準備嚮OpenGL傳輸數據
1.4.2 將數據傳輸到OpenGL
1.4.3 頂點著色
1.4.4 細分著色
1.4.5 幾何著色
1.4.6 圖元裝配
1.4.7 剪切
1.4.8 光柵化
1.4.9 片元著色
1.4.1 0逐片元的操作
1.5 第一個程序:深入分析
1.5.1 進入main()函數
1.5.2 OpenGL的初始化過程
1.5.3 第一次使用OpenGL進行渲染
第2章 著色器基礎
2.1 著色器與OpenGL
2.2 OpenGL的可編程管綫
2.3 OpenGL著色語言概述
2.3.1 使用GLSL構建著色器
2.3.2 存儲限製符
2.3.3 語句
2.3.4 計算的不變性
2.3.5 著色器的預處理器
2.3.6 編譯器的控製
2.3.7 全局著色器編譯選項
2.4 數據塊接口
2.4.1 uniform塊
2.4.2 指定著色器中的uniform塊
2.4.3 從應用程序中訪問uniform塊
2.4.4 buffer塊
2.4.5 in/out塊
2.5 著色器的編譯
2.5.1 我們的Load Shaders函數
2.6 著色器子程序
2.6.1 GLSL的子程序設置
2.6.2 選擇著色器子程序
2.7 獨立的著色器對象
第3章 OpenGL繪製方式
3.1 OpenGL圖元
3.1.1 點
3.1.2 綫、條帶與循環綫
3.1.3 三角形、條帶與扇麵
3.2 OpenGL緩存數據
3.2.1 創建與分配緩存
3.2.2 嚮緩存輸入和輸齣數據
3.2.3 訪問緩存的內容
3.2.4 丟棄緩存數據
3.3 頂點規範
3.3.1 深入討論Vertex Attrib-Pointer
3.3.2 靜態頂點屬性的規範
3.4 OpenGL的繪製命令
3.4.1 圖元的重啓動
3.5 多實例渲染
3.5.1 多實例的頂點屬性
3.5.2 在著色器中使用實例計數器
3.5.3 多實例方法的迴顧
第4章 顔色、像素和幀緩存
4.1 基本顔色理論
4.2 緩存及其用途
4.2.1 緩存的清除
4.2.2 緩存的掩碼
4.3 顔色與OpenGL
4.3.1 顔色的錶達與OpenGL
4.3.2 頂點顔色
4.3.3 光柵化
4.4 多重采樣
4.4.1 采樣著色
4.5 片元的測試與操作
4.5.1 剪切測試
4.5.2 多重采樣的片元操作
4.5.3 模闆測試
4.5.4 模闆的例子
4.5.5 深度測試
4.5.6 融混
4.5.7 融混參數
4.5.8 控製融混的參數
4.5.9 融混方程
4.5.10 抖動
4.5.11 邏輯操作
4.5.12 遮擋查詢
4.5.13 條件渲染
4.6 逐圖元的反走樣
4.6.1 綫段的反走樣
4.6.2 多邊形的反走樣
4.7 幀緩存對象
4.7.1 渲染緩存
4.7.2 創建渲染緩存的存儲空間
4.7.3 幀緩存附件
4.7.4 幀緩存的完整性
4.7.5 幀緩存的無效化
4.8 多重渲染緩存的同步寫入
4.8.1 選擇顔色緩存來進行讀寫操作
4.8.2 雙源融混
4.9 像素數據的讀取和拷貝
4.1 0拷貝像素矩形
第5章 視口變換、剪切與反饋
5.1 觀察視圖
5.1.1 視圖模型
5.1.2 相機模型
5.1.3 正交視圖模型
5.2 用戶變換
5.2.1 矩陣乘法的迴顧
5.2.2 齊次坐標
5.2.3 綫性變換與矩陣
5.2.4 法綫變換
5.2.5 OpenGL矩陣
5.3 OpenGL變換
5.3.1 高級技巧:用戶剪切
5.4 trans form feedback
5.4.1 transformfeedback對象
5.4.2 transformfeedback緩存
5.4.3 配置transformfeedback的變量
5.4.4 transformfeedback的啓動和停止
5.4.5 transformfeedback的示例:粒子係統
第6章 紋理
6.1 紋理映射
6.2 基本紋理類型
6.3 創建和初始化紋理
6.3.1 紋理格式
6.4 代理紋理
6.5 設置紋理數據
6.5.1 顯式設置紋理數據
6.5.2 使用PixelUnpack緩存
6.5.3 從幀緩存拷貝數據
6.5.4 從文件加載圖像
6.5.5 查詢紋理數據
6.5.6 紋理數據布局
6.6 采樣器對象
6.6.1 采樣器參數
6.7 使用紋理
6.7.1 紋理坐標
6.7.2 組織紋理數據
6.7.3 使用多重紋理
6.8 復雜紋理類型
6.8.1 3維紋理
6.8.2 數組紋理
6.8.3 立方體映射紋理
6.8.4 陰影采樣器
6.8.5 深度模闆紋理
6.8.6 緩存紋理
6.9 紋理視圖
6.1 0壓縮紋理
6.1 1濾波
6.1 1.1 綫性濾波
6.1 1.2 使用和生成mipmap
6.1 1.3 計算mipmap級彆
6.1 1.4 mipmap細節層次控製
6.1 2高級紋理查詢函數
6.1 2.1 顯式細節層次
6.1 2.2 顯式梯度設置
6.1 2.3 偏移後的紋理獲取
6.1 2.4 投影紋理
6.1 2.5 著色器中的紋理查詢
6.1 2.6 收集紋素
6.1 2.7 閤並特殊函數
6.1 3點精靈
6.1 3.1 帶紋理的點精靈
6.1 3.2 控製點的外觀
6.1 4渲染到紋理貼圖
6.1 4.1 丟棄已渲染數據
6.1 5本章總結
6.1 5.1 紋理迴顧
6.1 5.2 紋理的最好實踐
第7章 光照與陰影
7.1 光照介紹
7.2 經典光照模型
7.2.1 不同光源類型的片元著色器
7.2.2 將計算移到頂點著色器
7.2.3 多個光源和材質
7.2.4 光照坐標係統
7.2.5 經典光照模型的局限
7.3 光照模型進階
7.3.1 半球光照
7.3.2 基於圖像的光照
7.3.3 球麵光照
7.4 陰影映射
7.4.1 創建一張陰影貼圖
7.4.2 使用陰影貼圖
第8章 程序式紋理
8.1 程序式紋理
8.1.1 規則的花紋
8.1.2 玩具球
8.1.3 晶格
8.1.4 程序式著色方法的總結
8.2 凹凸貼圖映射
8.2.1 應用程序設置
8.2.2 頂點著色器
8.2.3 片元著色器
8.2.4 法綫貼圖
8.3 程序式紋理的反走樣
8.3.1 走樣的來源
8.3.2 避免走樣問題
8.3.3 提高分辨率
8.3.4 高頻率的反走樣
8.3.5 頻率截斷
8.3.6 程序式反走樣的總結
8.4 噪聲
8.4.1 噪聲的定義
8.4.2 噪聲紋理
8.4.3 權衡
8.4.4 一個簡單的噪聲著色器
8.4.5 湍流
8.4.6 大理石
8.4.7 花崗岩
8.4.8 木紋
8.4.9 噪聲的總結
8.5 更多信息
第9章 細分著色器
9.1 細分著色器
9.2 細分麵片
9.3 細分控製著色器
9.3.1 生成輸齣麵片的頂點
9.3.2 細分控製著色器的變量
9.3.3 細分的控製
9.4 細分計算著色器
9.4.1 設置圖元生成域
9.4.2 設置生成圖元的麵朝嚮
9.4.3 設置細分坐標的間隔
9.4.4 更多的細分計算著色器layout選項
9.4.5 設置頂點的位置
9.4.6 細分計算著色器的變量
9.5 細分實例:茶壺
9.5.1 處理麵片輸入頂點
9.5.2 計算茶壺的細分坐標
9.6 更多的細分技術
9.6.1 視口相關的細分
9.6.2 細分的共享邊與裂縫
9.6.3 置換貼圖映射
第10章 幾何著色器
10.1 創建幾何著色器
10.2 幾何著色器的輸入和輸齣
10.2.1 幾何著色器的輸入
10.2.2 特殊的幾何著色器圖元
10.2.3 幾何著色器的輸齣
10.3 産生圖元
10.3.1 幾何體的裁減
10.3.2 幾何體的擴充
10.4 transformfeedback高級篇
10.4.1 多重輸齣流
10.4.2 圖元查詢
10.4.3 使用transformfeedback的結果
10.5 幾何著色器的多實例化
10.6 多視口與分層渲染
10.6.1 視口索引
10.6.2 分層渲染
10.7 本章小結
10.7.1 幾何著色器迴顧
10.7.2 幾何著色器的經驗談
第11章 內存
11.1 使用紋理存儲通用數據
11.1.1 將紋理綁定到圖像單元
11.1.2 圖像數據的讀取和寫入
11.2 著色器存儲緩存對象
11.2.1 寫入結構化數據
11.3 原子操作和同步
11.3.1 圖像的原子操作
11.3.2 緩存的原子操作
11.3.3 同步對象
11.3.4 圖像限定符和屏障
11.3.5 高性能的原子計數器
11.4 示例
11.4.1 順序無關的透明
第12章 計算著色器
12.1 概述
12.2 工作組及其執行
12.2.1 知道工作組的位置
12.3 通信與同步
12.3.1 通信
12.3.2 同步
12.4 示例
12.4.1 物理模擬
12.4.2 圖像處理
12.5 本章總結
12.5.1 計算著色器迴顧
12.5.2 計算著色器的最佳實踐
附錄A GLUT基礎知識
附錄B OpenGLES與WebGL
附錄C 內置GLSL變量與函數
附錄D 狀態變量
附錄E 齊次坐標與變換矩陣
附錄F OpenGL與窗口係統
附錄G 紋理、幀緩存與渲染緩存的浮點格式
附錄H OpenGL程序的調試與優化
附錄I 緩存對象的布局
術語錶
前言/序言
譯者序
OpenGL發展至今,已經超過瞭20年的時間。作為一個成熟而久負盛名的跨平颱的計算機圖形應用程序接口規範,它已經被廣泛應用於遊戲、影視、軍事、航空航天、地理、醫學、機械設計,以及各類科學數據可視化的領域。而隨著網絡和移動平颱的飛速發展,異軍突起的OpenGLES和WebGL標準也吸引瞭大批開發者的眼球,而這兩者與OpenGL本身同樣有著韆絲萬縷的聯係。
OpenGL支持幾乎所有現有的主流操作係統平颱,包括Windows、MacOSX以及各種UNIX平颱。它同時也可以用於幾乎所有主流的編程語言環境當中,例如C/C++、Java、C#、VisualBasic、Python、Perl等。因此,無可非議地說,OpenGL應當是目前全球最為廣泛學習和使用的圖形開發API接口,我們幾乎可以在全世界任何一颱計算機安裝的軟件當中找到它的身影(當然,在Windows平颱下總會有OpenGL和DirectX兩類API的地位與優劣之爭,這又是本書內容之外的另一番故事瞭)。
而作為OpenGL學習的經典書籍,有著“紅寶書”之名的《華章程序員書庫:OpenGL編程指南(原書第8版)》也已經更新到瞭第8版。這一版的最大特色就是“變革”。是的,這是一本變革之書,它直接與OpenGL4.3版本的內容相貼閤,徹底以核心模式的主要函數與著色器的內容為講解重點。如果你已經讀過以前的一些修訂版本,並且已經對glBegin()、glLoadMatrix(),或者displaylist這些函數和名詞耳熟能詳,那麼不要驚訝:從這一版開始,你將再也見不到有關這些內容的介紹。即使你是一位從業數十年的OpenGL開發者,從這一刻開始,你恐怕也需要從頭來過。
不過無須驚惶,你手頭的已經開發瞭多年的OpenGL程序,依然可以在兼容模式下順利執行。而基於可編程流水綫的全新架構和接口,想必也會給有經驗的開發者帶來更多的思考與創新力。而對於初涉OpenGL開發的新人來說,這恰恰是一個好機會,讓你們從新的起點齣發,把學習和思考的重心放在以著色語言為基礎的體係之上,而不是死記硬背那些程序接口,或者苦惱於繁雜的狀態切換。
《華章程序員書庫:OpenGL編程指南(原書第8版)》內容翔實,章節劃分清晰明確,適閤各種層次的讀者選擇性地閱讀。不過,作為一個具有顛覆性質的修訂版本,這一版的“紅寶書”也暴露齣內容講解上的一些問題,部分章節略顯臃腫冗餘,而內容的銜接上也不夠連貫,這樣都可能讓沒有基礎的新人感到無所適從。應當說,這也是本書未來亟待更新和改進的方麵。
譯者作為基於OpenGL的開源3維引擎OpenSceneGraph的核心開發者,有幸主持瞭本版的翻譯工作,但是因為時間緊迫,譯者纔疏學淺,因此錯漏之處想必很多,敬請讀者諒解。如有任何形式的批評或建議,歡迎隨時與譯者聯係。《華章程序員書庫:OpenGL編程指南(原書第8版)》的圖文內容與之前的修訂版本基本不存在關聯,書中第1~6章,第8~11章均由王銳負責翻譯與整理,其他參與本書翻譯的人員還有:郭華(第6章,附錄G、附錄H和附錄I)、蘇明南(第7章和附錄D)、張靜(第12章)、王凱(附錄A)、陳節(附錄B)、龍海鷹(附錄C)、畢玉玲(附錄E)。感謝他們的辛苦付齣,也感謝機械工業齣版社的編輯們的信任與幫助!
華章程序員書庫:OpenGL編程指南(原書第8版) [OpenGL Programming Guide] 下載 mobi epub pdf txt 電子書
華章程序員書庫:OpenGL編程指南(原書第8版) [OpenGL Programming Guide] pdf epub mobi txt 電子書 下載