深入理解OpenGL、WebGL和OpenGL ES ( 簡體 字) |
作者:[美]帕特里克·科齊(Patrick Cozzi) [美]克里斯托弗·里奇奧(Christophe Riccio) 武海軍 譯 | 類別:1. -> 多媒體 -> OpenGL |
譯者: |
出版社:清華大學出版社 | 3dWoo書號: 52791 詢問書籍請說出此書號!【缺書】 NT售價: 995 元 |
出版日:5/1/2020 |
頁數:690 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787302552253 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:有時候我很希望自己能參與40年前的計算機圖形學研究,當時該領域正在展開對可見表面和著色的早期探索,有許多基本問題仍需要解決,而即將閃亮登場的解決方案則將對后來的發展產生很大的影響。 當然,我更感激當前所處的時代,建模、渲染和動畫的基礎都已經建立,幾乎所有的設備都可以使用硬件加速渲染。作為開發人員,我們現在能夠通過逼真細致的實時圖形為大量用戶提供令人驚嘆的服務。 在某種程度上,我們要感謝渲染API的迅捷和可用性,包括OpenGL、OpenGL ES和WebGL。頻繁的OpenGL規范更新與公開這些新功能的驅動程序相結合,使OpenGL成為尋求使用最新GPU功能的跨平臺桌面開發人員的首選API。隨著智能手機和平板電腦設備的爆炸式增長,OpenGL ES成為iOS和Android上硬件加速渲染的API。最近,WebGL也呈現出迅速普及的趨勢,它們可以在網頁上提供真正零占用的硬件加速3D圖形。 隨著OpenGL、OpenGL ES和WebGL的廣泛使用,我們認識到使用這些API的開發人員需要相互學習,而不僅僅是基礎知識的交流。為此,我們創建了OpenGL Insights系列,第一卷的作者包含開發人員、硬件供應商、研究人員和教育工作者。它既是對OpenGL系列API廣泛使用的獻禮,也包含一系列總結現有實用技術和深入探討未來發展的文章。 本書內容豐富,主題多樣,從在課堂上使用OpenGL到最新擴展的介紹,再到優化移動設備和設計WebGL庫,可謂應有盡有。許多章節還具有一定的技術深度,例如,異步緩沖和紋理傳輸、性能狀態跟蹤和可編程頂點拉動等。 開發者社區對這些API的熱情激勵著我們開始這個系列的編輯工作。在這個時代,可能需要解決的基礎問題較少,但需要解決的問題的廣度和復雜性則令人驚訝。這是一個成為杰出的OpenGL開發人員的最好時刻。 Patrick Cozzi
首先,我要感謝Patrick讓我和他一起參與這個項目。我還記得那天晚上,在電影院看到一部很棒的電影后,我收到了他的電子郵件。雖然我給出的答案真的只有一個,但我還是試圖掙扎了一下:“哦,讓我考慮一下。”這樣的猶豫不決僅持續了不到5秒鐘,接下來留給我的就是很多的工作,以及在這個過程中的大量學習。 盡管我們在文化和背景方面存在差異,但Patrick和我之間的共同愿望是:我們想要制作一本好書,不帶任何偏見地揭示整個OpenGL社區的觀點,擁抱每一個熱情分享圖形多樣性的人,這也是OpenGL生態系統所提倡的。 OpenGL規范是OpenGL的基礎,但它們遠遠不足以讓開發人員理解其潛力和局限性。這就好比一個人掌握了平仄規律,但未必能寫出好詩一樣。我們希望本書能給開發人員帶來一些不容易獲得的經驗,以幫助OpenGL程序開發人員創建更高效的開發和圖形軟件。
Christophe Riccio 致謝 本書是基于OpenGL開發人員社區的內容編撰而成的,所以需要付出巨大的努力。讓我們感激的是,從本書的策劃到獲取作者提交的所有內容,我們都得到了很多幫助。在此謹對以下人士表示誠摯的謝意:Quarup Barreirinhas(Google)、Henrik Bennetsen(Katalabs)、Eric Haines(Autodesk)、Jon Leech(Khronos Group)、Barthold Lichtenbelt(NVIDIA)、Jon McCaffrey(NVIDIA)、Tom Olson(ARM)、Kevin Ring(AGI)、Ken Russell(Google)和Giles Thomas(Resolver Systems)。 本書得益于開放的評審機制。作為編者,我們審讀了全部章節,但這還遠遠不夠。各位撰稿人主動進行了同行評審,還有許多外部評審員自愿參加。在此謹對以下人士表示誠摯的謝意:Guillaume Chevelereau(Intersec)、Mikkel Gjoel(Splash Damage)、Dimitri Kudelski(艾克斯-馬賽大學)、Eric Haines(Autodesk)、Andreas Heumann(NVIDIA)、Randall Hopper(L-3 Communications)、Steve Nash(NVIDIA)、Deron Ohlarik(AGI)、Emil Persson(Avalanche Studios)、Aras Pranckevicius(Unity Technologies)、Swaroop Rayudu(Autodesk)、Kevin Ring(AGI)、Mathieu Roumillac(e-on software)、Kenneth Russell(Google)、Graham Sellers(AMD)、Giles Thomas(Resolver Systems)和Marco Weber(Imagination Technologies)。 許多作者為本書做出了重要貢獻。在此感謝每位作者、同行評審和熱情的外部評審員們所做出的貢獻。另外,還要感謝Alice Peters、Sarah Chow和Kara Ebrahim為出版本書而付出的辛勤努力。 本書的編撰花費了大量時間,幸運的是我們獲得了就職單位的大力支持和理解,特此感謝Analytical Graphics公司的Paul Graziani、Frank Linsalata、Jimmy Tucholski和Shashank Narayan。另外,還要感謝賓夕法尼亞大學的Norm Badler、Steve Lane和Joe Kider。 在全職工作之余編輯這樣一本精品圖書對我們來說殊為不易,以至于有很長一段時間我們都未能在夜晚、周末甚至假期陪伴家人和朋友。在此,要感謝Anthony Cozzi、Margie Cozzi、Peg Cozzi和Jilda Stowe的理解和支持。 本書配套網站 本書配套的OpenGL Insights網站包含本書源代碼、彩色圖像和其他補充內容
有任何意見或更正建議請發送郵件 |
內容簡介:本書詳細闡述了與OpenGL相關的基本解決方案,主要包括渲染技術、混合管線、性能、傳輸、調試和性能分析、軟件設計等內容。此外,本書還提供了相應的示例,以幫助讀者進一步理解相關方案的實現過程。 本書適合作為高等院校計算機及相關專業的教材和教學參考書,也可作為相關開發人員的自學教材和參考手冊。 |
目錄:第1篇發現 第1章基于著色器的OpenGL計算機圖形學課程3 1.1簡介3 1.2基礎課程4 1.3簡單的OpenGL示例4 1.4從可編程管線開始7 1.5新的簡單示例8 1.5.1OpenGLES和WebGL11 1.5.2第一項作業11 1.6課程的其余部分11 1.6.1幾何12 1.6.2變換和視圖12 1.6.3照明和著色13 1.6.4紋理和離散處理14 1.6.5高級主題14 1.6.6問題15 1.7小結16 致謝17 參考文獻17 第2章過渡到新OpenGL版本19 2.1概述19 2.2命名著色器變量:簡介19 2.3命名著色器變量:詳細信息20 2.4索引頂點緩沖區對象C++類22 2.4.1使用注意事項22 2.4.2示例代碼23 2.4.3實現說明25 2.5GLSLProgramC++類26 2.5.1使用注意事項26 2.5.2示例代碼27 2.5.3實現說明28 2.6小結28 參考文獻29 第3章適用于OpenGL開發人員的WebGL31 3.1簡介31 3.2WebGL的優勢31 3.2.1零要求32 3.2.2跨平臺32 3.2.3跨設備32 3.2.4易開發34 3.2.5強大的工具支持35 3.2.6性能36 3.3安全性38 3.3.1跨源請求39 3.3.2上下文丟失41 3.4部署著色器41 3.5關于JavaScript語言42 3.5.1JavaScript類型43 3.5.2動態類型45 3.5.3函數范圍45 3.5.4函數編程46 3.5.5原型對象47 3.5.6this關鍵字48 3.5.7代碼組織50 3.5.8常見錯誤51 3.6資源51 參考文獻52 第4章將移動應用程序移植到WebGL53 4.1簡介53 4.2跨平臺的OpenGL53 4.3入門54 4.3.1初始化OpenGLES上下文54 4.3.2加載著色器55 4.3.3繪制頂點56 4.4加載紋理57 4.4.1分配紋理57 4.4.2處理異步加載59 4.5相機和矩陣60 4.5.1對比float和Float32Array60 4.5.2將矩陣傳遞給著色器60 4.6控制61 4.6.1觸摸事件61 4.6.2在相機和碰撞中使用觸摸事件62 4.7其他考慮因素63 4.7.1動畫63 4.7.2繼承63 4.8維護64 4.8.1調試64 4.8.2性能分析65 4.8.3性能和采用65 4.9小結66 參考文獻67 第5章GLSL著色器接口69 5.1簡介69 5.2變量和塊69 5.2.1用戶定義的變量和塊69 5.2.2內置變量和塊71 5.3位置72 5.3.1定義72 5.3.2計算位置73 5.3.3位置限制74 5.4匹配接口76 5.4.1部分和完全匹配76 5.4.2類型匹配78 5.4.3按名稱和位置匹配80 5.4.4按塊匹配81 5.4.5按結構匹配83 5.4.6鏈接和單獨的程序86 5.5使用語義87 5.5.1編譯器生成的變化的位置和顯式位置87 5.5.2頂點數組屬性和頂點著色器輸入87 5.5.3片段著色器輸出和幀緩沖區顏色附加數據89 5.5.4變化的輸出和變化的輸入90 5.5.5統一格式緩沖區和統一格式塊91 5.6僅適用于調試的應用程序端驗證92 5.6.1頂點輸入驗證93 5.6.2變化的接口驗證93 5.6.3片段輸出驗證93 5.6.4變量驗證94 5.6.5統一格式塊驗證94 5.7小結95 致謝96 參考文獻96 第6章曲面細分著色器簡介97 6.1簡介97 6.1.1細分表面97 6.1.2平滑多邊形數據98 6.1.3GPU計算98 6.1.4曲線、頭發和草地98 6.1.5其他用途99 6.2新的著色管道99 6.2.1圖塊的生命101 6.2.2線程模型102 6.2.3輸入和輸出103 6.2.4曲面細分控制著色器104 6.2.5曲面細分評估著色器107 6.2.6使用quads生成圖元108 6.2.7使用triangles生成圖元109 6.3對茶壺進行曲面細分110 6.4等值線和螺旋113 6.5結合其他OpenGL功能114 參考文獻115 第7章GLSL中的程序紋理117 7.1簡介117 7.2簡單函數118 7.3抗鋸齒120 7.4Perlin噪聲121 7.5Worley噪聲124 7.6動畫127 7.7紋理圖像127 7.8性能130 7.9小結131 參考文獻131 第8章基于OpenGL和OpenGLES的OpenGLSC仿真133 8.1簡介133 8.2OpenGLSC實現134 8.3設計和實現138 8.3.1總體管線138 8.3.2紋理管線140 8.4結果142 8.5小結143 參考文獻144 第9章混合圖形和使用多個GPU進行計算147 9.1簡介147 9.2API級別的圖形和計算互操作性147 9.2.1互操作性準備147 9.2.2OpenGL對象交互149 9.3系統級的圖形和計算互操作性151 9.4小結155 參考文獻156 第2篇渲染技術 第10章GPU曲面細分:地形LOD討論159 10.1簡介159 10.2使用OpenGLGPU曲面細分渲染地形159 10.3動態LOD的簡單方法163 10.4粗糙度和細節166 10.5渲染測試168 10.5.1測試設置168 10.5.2評估LOD解決方案的質量169 10.5.3性能172 10.6小結176 參考文獻177 第11章使用基于著色器的抗鋸齒體積線179 11.1簡介179 11.2后處理抗鋸齒180 11.3抗鋸齒體積線180 11.3.1使用頂點著色器進行幾何體擠出181 11.3.2使用幾何著色器進行幾何體擠出183 11.4性能185 11.5小結186 參考文獻186 第12章通過距離場渲染2D形狀189 12.1簡介189 12.2方法概述190 12.3更好的距離場算法191 12.4距離紋理192 12.5硬件加速距離變換192 12.6片段渲染193 12.7特效195 12.8性能195 12.9缺點196 12.10小結197 參考文獻197 第13章WebGL中的高效文本渲染199 13.1簡介199 13.2基于畫布的字體渲染199 13.2.1HTML5Canvas199 13.2.2概念200 13.2.3實現200 13.3位圖字體渲染202 13.3.1概念202 13.3.2創建位圖字體204 13.3.3實現204 13.4對比206 13.4.1性能207 13.4.2內存使用情況209 13.4.3開發難度210 13.5小結210 參考文獻211 第14章分層紋理渲染管線213 14.1簡介213 14.1.1術語214 14.1.2在Blender軟件中的紋理214 14.2分層管線215 14.2.1關于G緩沖區創建215 14.2.2層解決方案216 14.2.3統一的視差偏移218 14.2.4照明219 14.3實現和結果219 14.3.1實現219 14.3.2結果220 14.4小結221 參考文獻221 第15章景深與模糊渲染223 15.1簡介223 15.2景深現象224 15.3相關工作227 15.4算法227 15.4.1概述227 15.4.2模糊圈的計算228 15.4.3散景檢測229 15.4.4基于模糊的景深232 15.4.5散景渲染232 15.5結果234 15.6討論235 15.7小結236 參考文獻236 第16章陰影代理239 16.1簡介239 16.2對陰影代理的剖析241 16.3設置管線242 16.4啟用ShadowProxy的片段著色器244 16.5調整陰影體積246 16.6性能246 16.7小結248 參考文獻248 第3篇混合管線 第17章使用變換反饋的基于物理學的實時變形251 17.1簡介251 17.2硬件支持和變換反饋的演變252 17.3變換反饋的機制253 17.4數學模型254 17.5實現258 17.5.1使用Verlet積分頂點著色器258 17.5.2注冊屬性以變換反饋260 17.5.3數組緩沖區和緩沖區對象設置261 17.5.4數據的動態修改263 17.6實驗結果和比較264 17.7小結265 參考文獻265 第18章GPU上的分層深度剔除和包圍盒管理267 18.1簡介267 18.2管線268 18.2.1早期深度通道270 18.2.2深度LOD構造271 18.2.3包圍盒更新272 18.2.4分層深度剔除274 18.2.5包圍盒調試繪圖275 18.3操作順序276 18.4實驗結果277 18.5小結279 參考文獻279 第19章使用分層渲染的大量陰影281 19.1簡介281 19.2在OpenGL中的傳統陰影貼圖渲染技術282 19.3陰影貼圖生成算法285 19.4性能287 19.4.1使用復雜頂點著色器的性能291 19.4.2視錐體剔除優化293 19.4.3背面剔除優化296 19.5高級技術298 19.6局限性299 19.7小結300 參考文獻301 第20章高效的分層片段緩沖區技術303 20.1簡介303 20.2相關工作304 20.3鏈表LFB306 20.4線性化LFB307 20.5性能結果310 20.6小結314 參考文獻315 第21章可編程頂點拉動317 21.1簡介317 21.2實現317 21.3性能320 21.4應用322 21.5局限性323 21.6小結324 參考文獻324 第22章使用GPU硬件光柵化器進行基于八叉樹的稀疏體素化327 22.1簡介327 22.2以前的工作成果328 22.3關于GLSL中的無限制內存訪問329 22.4簡單的體素化管線330 22.4.1保守光柵化332 22.4.2組合體素片段333 22.4.3結果335 22.5稀疏體素化為八叉樹336 22.5.1八叉樹結構337 22.5.2稀疏體素化概述337 22.5.3使用原子計數器進行體素-片段列表構建338 22.5.4節點細分339 22.5.5寫入和Mipmap值340 22.5.6使用間接繪圖實現無同步內核啟動340 22.5.7結果與討論341 22.6小結342 致謝342 參考文獻342 第4篇性能 第23章基于圖塊架構的性能調優347 23.1簡介347 23.2背景348 23.3清除和丟棄幀緩沖區351 23.4增量幀更新352 23.5沖洗353 23.6延遲354 23.7隱藏表面消除356 23.8混合357 23.9多重采樣357 23.10性能分析358 23.11小結359 參考文獻359 第24章探索移動與桌面OpenGL性能361 24.1簡介361 24.2重要的差異和約束361 24.2.1尺寸差異361 24.2.2渲染架構差異362 24.2.3內存架構差異363 24.3減少內存帶寬364 24.3.1相對顯示尺寸365 24.3.2幀緩沖區帶寬365 24.3.3抗鋸齒366 24.3.4紋理帶寬367 24.3.5紋理過濾和帶寬368 24.4減少片段工作負載368 24.4.1過度繪制和混合368 24.4.2全屏效果370 24.4.3屏幕外通道371 24.4.4修剪片段工作372 24.5頂點著色372 24.6小結373 參考文獻374 第25章通過減少對驅動程序的調用來提高性能377 25.1簡介377 25.2高效的OpenGL狀態使用377 25.2.1檢測冗余狀態修改378 25.2.2有效狀態修改的一般方法378 25.3批處理和實例化381 25.3.1批處理381 25.3.2關于OpenGL實例化383 25.4小結386 致謝386 參考文獻387 第26章索引多個頂點數組389 26.1簡介389 26.2問題389 26.3算法392 26.4頂點比較方法393 26.4.1關于If/Then/Else版本393 26.4.2關于memcmp()版本394 26.4.3哈希函數394 26.5性能395 26.6小結397 參考文獻397 第27章NVIDIAQuadro上的多GPU渲染399 27.1簡介399 27.2以前的擴展方法400 27.3指定特定GPU進行渲染401 27.4優化GPU之間的數據傳輸406 27.5多GPU的應用結構407 27.6并行渲染方法410 27.6.1先排序圖像分解410 27.6.2后排序數據分解411 27.6.3立體渲染412 27.6.4服務器端渲染412 27.7小結413 參考文獻413 第5篇傳輸 第28章異步緩沖區傳輸417 28.1簡介417 28.2緩沖區對象418 28.2.1內存傳輸418 28.2.2使用提示421 28.2.3隱式同步422 28.2.4同步原語423 28.3上傳424 28.3.1輪詢(多個緩沖區對象)424 28.3.2緩沖區重新指定(孤立)425 28.3.3非同步緩沖區427 28.3.4關于AMD_pinned_memory擴展429 28.4下載429 28.5復制432 28.6多線程和共享上下文432 28.6.1多線程OpenGL簡介433 28.6.2同步問題434 28.6.3內部同步導致的性能損失434 28.6.4關于共享上下文的總結435 28.7使用方案436 28.7.1方法1:單線程436 28.7.2方法2:兩個線程和一個OpenGL上下文437 28.7.3方法3:兩個線程和兩個OpenGL共享上下文439 28.7.4性能比較439 28.8小結441 參考文獻442 第29章費米異步紋理傳輸443 29.1簡介443 29.2關于OpenGL命令緩沖區執行445 29.3當前紋理傳輸方法446 29.3.1同步紋理傳輸447 29.3.2CPU異步紋理傳輸448 29.4GPU異步紋理傳輸450 29.5實現細節452 29.5.1多個OpenGL上下文452 29.5.2同步453 29.5.3復制引擎注意事項455 29.6結果與分析455 29.7小結460 參考文獻460 第30章WebGL模型:端到端461 30.1簡介461 30.2關于3D模型的生命周期462 30.2.1第1階段:管線462 30.2.2第2階段:服務463 30.2.3第3階段:加載465 30.2.4第4階段:渲染468 30.3整體一致性472 30.3.1Delta編碼473 30.3.2Delta編碼分析474 30.3.3ZigZag編碼475 30.3.4Delta+ZigZag編碼分析476 30.3.5壓縮管線477 30.4主要改進478 30.4.1交錯和轉置的對比478 30.4.2高水位線預測479 30.4.3性能482 30.4.4未來的工作482 30.5小結483 致謝483 參考文獻484 第31章使用實時紋理壓縮進行游戲內視頻捕捉485 31.1簡介485 31.2DXT壓縮概述485 31.3DXT壓縮算法486 31.4轉換為YUV格式顏色空間488 31.5比較490 31.6對程序內容和視頻捕捉使用實時DXT壓縮492 31.6.1使用YUYV-DXT壓縮的視頻捕捉492 31.6.2帶寬因素493 31.6.3視頻流的格式493 31.6.4從GPU下載視頻幀495 31.7小結495 參考文獻496 第32章OpenGL友好幾何文件格式及其Maya導出器497 32.1簡介497 32.2背景知識497 32.2.1目標和特性497 32.2.2現有格式499 32.3關于Drone格式499 32.3.1二進制布局499 32.3.2DroneAPI501 32.3.3場景API503 32.4編寫Maya文件轉換器504 32.4.1MayaSDK基礎知識504 32.4.2編寫轉換器505 32.4.3遍歷MayaDAG506 32.4.4導出可供OpenGL使用的網格506 32.5結果507 32.6小結509 參考文獻510 第6篇調試和性能分析 第33章開發人員的強力臂助:ARB_debug_output513 33.1簡介513 33.2公開擴展513 33.3使用回調函數514 33.4通過事件原因排序515 33.5訪問消息日志516 33.6將自定義用戶事件添加到日志中517 33.7控制事件輸出量518 33.8防止對最終版本的影響519 33.9巨頭之間的爭斗:實現策略520 33.10關于調試的進一步思考521 33.11小結521 參考文獻522 第34章OpenGL計時器查詢523 34.1簡介523 34.2測量OpenGL執行時間524 34.2.1關于OpenGL時間525 34.2.2同步計時器查詢525 34.2.3異步計時器查詢526 34.2.4異步時間戳查詢528 34.2.5考慮查詢檢索530 34.3小結531 參考文獻532 第35章實時性能分析工具533 35.1簡介533 35.2范圍和要求533 35.3工具設計534 35.3.1用戶界面534 35.3.2限制和解決方法535 35.3.3應用程序編程接口535 35.4實現536 35.4.1測量CPU上的時間536 35.4.2測量GPU上的時間537 35.4.3數據結構537 35.4.4標記管理539 35.5使用性能分析程序540 35.5.1使用級別540 35.5.2確定應測量的內容541 35.5.3藝術設計師542 35.5.4局限性542 35.6小結542 參考文獻543 第36章瀏覽器圖形分析和優化545 36.1簡介545 36.2發光效果的階段545 36.3發光效果的開銷547 36.4分析WebGL應用程序548 36.4.1近乎原生的圖形層引擎548 36.4.2JavaScript性能分析549 36.4.3WebGLInspector550 36.4.4英特爾圖形性能分析器550 36.5Windows上的分析工作流程551 36.6優化發光效果554 36.6.1較低的渲染目標分辨率555 36.6.2不必要的Mipmap生成556 36.6.3浮點幀緩沖區557 36.7小結558 參考文獻559 第37章性能狀態跟蹤561 37.1簡介561 37.2功耗策略561 37.3使用NVAPI進行P狀態跟蹤562 37.3.1關于GPU利用率563 37.3.2讀取P狀態564 37.4使用ADL進行P狀態跟蹤566 37.5小結567 參考文獻567 第38章圖形內存使用情況監控569 38.1簡介569 38.2圖形內存分配569 38.3查詢NVIDIA顯卡的內存狀態570 38.4查詢AMD顯卡的內存狀態571 38.5小結573 參考文獻573 第7篇軟件設計 第39章ANGLE項目:在Direct3D上實現OpenGLES2.0577 39.1簡介577 39.2背景577 39.3實現578 39.3.1坐標系579 39.3.2著色器編譯器和鏈接器583 39.3.3頂點和索引緩沖區587 39.3.4紋理588 39.3.5頂點紋理提取591 39.3.6圖元類型591 39.3.7蒙版清除592 39.3.8單獨的深度和模板緩沖區592 39.3.9同步593 39.3.10多重采樣593 39.3.11多個上下文和資源共享594 39.3.12上下文丟失595 39.3.13資源限制596 39.3.14優化597 39.3.15推薦做法598 39.3.16性能結果599 39.4未來工作600 39.5小結600 39.6源代碼600 致謝600 參考文獻601 第40章SceneJS:基于WebGL的場景圖形引擎603 40.1簡介603 40.2有效抽象WebGL604 40.2.1繪制列表編譯609 40.2.2狀態排序610 40.3優化場景611 40.3.1紋理圖集611 40.3.2VBO共享611 40.3.3可共享的節點核心612 40.4拾取614 40.5小結614 參考文獻614 第41章SpiderGL中的特性和設計選擇617 41.1簡介617 41.2庫架構617 41.3表示3D對象619 41.4直接訪問WebGL對象狀態624 41.4.1問題625 41.4.2解決方案626 41.4.3使用SGL_current_binding628 41.4.4使用SGL_direct_state_access630 41.4.5缺點632 41.5WebGLObject包裝器633 41.6小結637 致謝637 參考文獻637 第42章Web上的多模態交互式模擬639 42.1簡介639 42.2關于Π-SoFMIS模塊的設計和定義639 42.3框架實現641 42.3.1模態642 42.3.2著色器642 42.3.3文件格式642 42.4渲染模塊643 42.5模擬模塊646 42.6硬件模塊647 42.7案例研究:LAGB模擬器649 42.8小結655 參考文獻655 第43章使用OpenGL和OpenGLES的子集方法657 43.1簡介657 43.2使陳舊的代碼現代化658 43.2.1立即模式和頂點屬性數組658 43.2.2圖元選擇660 43.2.3位圖和多邊形點畫660 43.3保持代碼在API變體中的可維護性662 43.3.1頂點和片段處理662 43.3.2GLX和EGL663 43.3.3頂點數組對象663 43.3.4線框模式664 43.3.5紋理包裝模式664 43.3.6非2的n次冪666 43.3.7圖像格式和類型667 43.3.8圖像布局668 43.3.9著色語言668 43.4特定功能的代碼塊669 43.5小結669 參考文獻670 第44章構建跨平臺應用程序671 44.1簡介671 44.2使用實用程序庫673 44.2.1使用GLUT的示例673 44.2.2使用Qt的示例674 44.2.3使用EGL的示例675 44.3與OpenGL版本無關的代碼676 44.4配置空間679 44.5關于Metabuilds和CMake680 44.6關于CMake和配置空間681 44.7關于CMake和平臺細節684 44.7.1平臺:Windows685 44.7.2平臺:MacOSX685 44.7.3平臺:iOS686 44.8小結690 參考文獻690 |
序: |