Khronos小組編寫(xiě)的OpenGL官方*威指南,素有“OpenGL紅寶*”美譽(yù)結(jié)合OpenGL 4.5的新特性,全方位闡釋OpenGL編程的各種技術(shù)細(xì)節(jié)、方法和*佳實(shí)踐,幫助程序員踏上OpenGL專家之路
作為如今世界知名的圖形學(xué)標(biāo)準(zhǔn)接口,OpenGL的*新版本(OpenGL 4.5)顯著提升了應(yīng)用程序的運(yùn)行效率、靈活性和性能。OpenGL 4.5是一個(gè)非常成熟而且穩(wěn)健的平臺(tái),可以實(shí)現(xiàn)高質(zhì)量的計(jì)算機(jī)圖像和交互程序的開(kāi)發(fā)工作,并且使用2D和3D物體、彩色圖像以及著色器的方式來(lái)表達(dá)整個(gè)場(chǎng)景。
本書(shū)詳細(xì)介紹了OpenGL 4.5(包括4.4、SPIR-V和擴(kuò)展功能),以及OpenGL著色語(yǔ)言的方方面面,能有效地幫助你編寫(xiě)和維護(hù)OpenGL代碼。
本版新增OpenGL特性包括:
涵蓋OpenGL 4.5的直接狀態(tài)訪問(wèn)(DSA)特性,這是對(duì)OpenGL開(kāi)發(fā)模式及應(yīng)用程序訪問(wèn)對(duì)象的方式的一次重大變革。
有關(guān)著色器的功能和GPU處理過(guò)程的深入討論以及案例講解,而越來(lái)越多的程序功能正趨向于在圖形處理器上直接實(shí)現(xiàn)。
根據(jù)開(kāi)發(fā)者社區(qū)的反饋和建議,增加了一些關(guān)鍵性功能的介紹和案例。
更新了附錄部分,包含*新的OpenGL庫(kù)、相關(guān)API、函數(shù)、變量、格式,以及調(diào)試和性能評(píng)價(jià)的方法。
OpenGL圖形系統(tǒng)是圖形硬件的一種軟件接口(GL表示Graphics Library,即圖形庫(kù))。它使得用戶可以創(chuàng)建交互式的程序以產(chǎn)生運(yùn)動(dòng)的三維對(duì)象的顏色圖像。通過(guò)OpenGL,我們可以使用計(jì)算機(jī)圖形學(xué)技術(shù)產(chǎn)生逼真的圖像,或者通過(guò)一些虛構(gòu)的方式產(chǎn)生虛擬的圖像。這本指南將告訴你如何使用OpenGL圖形系統(tǒng)進(jìn)行編程,得到你所期望的視覺(jué)效果。
本書(shū)的主要內(nèi)容本書(shū)中包含以下章節(jié):
第1章對(duì)OpenGL可以完成的工作進(jìn)行了概覽。它還提供了一個(gè)簡(jiǎn)單的OpenGL程序并解釋了一些本質(zhì)性的編程細(xì)節(jié),它們可能會(huì)用于后續(xù)的章節(jié)中。
第2章討論了OpenGL中最主要的特性—著色語(yǔ)言和SPIR-V,并介紹了它們?cè)趹?yīng)用程序中的初始化和使用方法。
第3章介紹了使用OpenGL進(jìn)行幾何體繪制的各種方法,以及一些可以讓渲染更為高效的優(yōu)化手段。
第4章解釋了OpenGL對(duì)于顏色的處理過(guò)程,包括像素的處理、緩存的管理,以及像素處理相關(guān)的渲染技術(shù)。
第5章給出了將三維場(chǎng)景表現(xiàn)在一個(gè)二維計(jì)算機(jī)屏幕上的操作細(xì)節(jié),包括各種幾何投影類型的數(shù)學(xué)原理和著色器操作。
第6章討論了將幾何模型與圖像結(jié)合來(lái)創(chuàng)建真實(shí)的、高質(zhì)量的三維模型的方法。
第7章介紹了計(jì)算機(jī)圖形的光照效果模擬方法,主要是這類方法在可編程著色器中的實(shí)現(xiàn)。
第8章介紹了使用可編程著色器生成紋理和其他表面效果的方法細(xì)節(jié),從而增強(qiáng)真實(shí)感和其他的渲染特效。
第9章解釋了OpenGL管理和細(xì)分幾何表面的著色器功能。
第10章介紹了在OpenGL渲染流水線中使用著色器進(jìn)行幾何體圖元修改的一種特殊技術(shù)。
第11章介紹了使用OpenGL幀緩存和緩存內(nèi)存實(shí)現(xiàn)高級(jí)渲染技術(shù)和非圖形學(xué)應(yīng)用的相關(guān)方法。
第12章介紹了最新的著色器階段,將通用計(jì)算的方法融合到OpenGL的渲染管線當(dāng)中。
此外,我們也提供了一系列作為參考的附錄內(nèi)容。
附錄A介紹了本書(shū)示例程序中用到的一些第三方支持庫(kù)。GLFW是可移植的,它可以用來(lái)實(shí)現(xiàn)更簡(jiǎn)短也更加可讀的代碼示例。而GL3W負(fù)責(zé)處理應(yīng)用程序與OpenGL函數(shù)之間的綁定關(guān)系。
附錄B介紹了OpenGL體系中的其他API,包括用于嵌入式和移動(dòng)平臺(tái)系統(tǒng)的OpenGL ES,以及用于Web瀏覽器內(nèi)的交互式3D應(yīng)用程序的WebGL。
附錄C提供了有關(guān)OpenGL著色語(yǔ)言的詳細(xì)參考文檔。
附錄D列出了OpenGL維護(hù)的所有狀態(tài)變量,并介紹了獲取其值的方法。
附錄E介紹了矩陣變換相關(guān)的一些數(shù)學(xué)方法。
附錄F對(duì)于OpenGL中所用到的浮點(diǎn)數(shù)格式做出了概述。
附錄G介紹了OpenGL中最新的調(diào)試特性。
附錄H給出了有關(guān)uniform緩存的使用的參考文檔,其中使用了OpenGL定義的標(biāo)準(zhǔn)內(nèi)存布局。
本版中的新特性本版《OpenGL編程指南》已經(jīng)針對(duì)最新的OpenGL 4.5進(jìn)行了修訂和更新。我們知道上一版是對(duì)以前版本的《OpenGL編程指南》內(nèi)容的一次顛覆,而這一版則是在此基礎(chǔ)上進(jìn)行了校對(duì),修訂了錯(cuò)誤,重寫(xiě)了一些內(nèi)容以便讓讀者更加愉悅地閱讀。從程序開(kāi)發(fā)的角度來(lái)說(shuō),OpenGL 4.5版本所帶來(lái)的最重大的特性變更就是直接狀態(tài)訪問(wèn)(direct state access),這是對(duì)OpenGL程序開(kāi)發(fā)模型和對(duì)象訪問(wèn)機(jī)制的一次重大革新。此外,我們也繼續(xù)嘗試將越來(lái)越多的功能移植到圖形處理器硬件中,因此本書(shū)將著重于對(duì)著色器功能和GPU處理機(jī)制的講解。
需要在閱讀本書(shū)之前掌握的知識(shí)本書(shū)假設(shè)你已經(jīng)了解了使用C++語(yǔ)言進(jìn)行編程的方法(我們將使用少量的C++程序,如果你對(duì)C語(yǔ)言已經(jīng)比較熟悉的話,應(yīng)該會(huì)比較容易理解它們),并且具有一定的數(shù)學(xué)背景(幾何、三角學(xué)、線性代數(shù)、微積分以及微分幾何)。即使對(duì)計(jì)算機(jī)圖形學(xué)技術(shù)沒(méi)有太多的經(jīng)驗(yàn)或者一無(wú)所知,你也可以學(xué)習(xí)和理解本書(shū)中討論的大部分內(nèi)容。當(dāng)然,計(jì)算機(jī)圖形學(xué)是一個(gè)不斷延展的學(xué)科,因此你也許還需要閱讀以下補(bǔ)充內(nèi)容來(lái)豐富自己的知識(shí)。
《Computer Graphics: Principles and Practice》第3版,John F. Hughes、Andries van Dam、Morgan McGuire、David F. Sklar、James D. Foley、Steven K. Feiner和Kurt Akeley著(Addison-Wesley,2013年出版):這本書(shū)是有關(guān)計(jì)算機(jī)圖形學(xué)的一本百科全書(shū),它包含了大量有價(jià)值的信息,不過(guò)在閱讀之前,你最好已經(jīng)對(duì)這門(mén)學(xué)科有了一定的了解。
《OpenGL SuperBible: Comprehensive Tutorial and Reference》第7版,Graham Sellers、Richard S. Wright Jr.、Nicolas Haemel著(Addison-Wesley,2015年出版):這本書(shū)采用教程的形式編寫(xiě),即使是對(duì)計(jì)算機(jī)圖形學(xué)一無(wú)所知的讀者也可以從這本循循善誘的指導(dǎo)書(shū)中開(kāi)始學(xué)習(xí)OpenGL。
《OpenGL Insights》,Patrick Cozzi和Christophe Riccio著(A. K. Peters,2012年出版):這是一本有關(guān)OpenGL高級(jí)技巧的論文集,包括一些資深開(kāi)發(fā)者、研究者以及一線工作者的感悟。每篇文章都會(huì)專注于某一個(gè)特定的技術(shù)領(lǐng)域,而這本書(shū)也會(huì)成為從事相關(guān)行業(yè)的讀者的極佳的靈感來(lái)源。