OpenGL是3D圖形接口工業標准,使用上非常簡單,所有API不過上百個函數,但理解OpenGL就沒那么簡單,本文總結OpenGL的學習資源,包括官方資料、網上教程、示例程序等。
Wikipedia:
OpenGL,介紹了OpenGL的歷史及版本;
Graphics processing unit,介紹了GPU,由於OpenGL更像個底層驅動,了解GPU對理解OpenGL很重要。
書籍:
紅寶書(The Red Book),OpenGL Programming Guide,目前最新版第8版(2013),中文譯本最新第7版,第8版較第7版幾乎徹底改版(第8版英文版網上有PDF);
藍寶書(The Blue Book),OpenGL Superbible: Comprehensive Tutorial and Reference,目前最新第6版(2013),中文譯本最新第5版;
GPU Gens 3,非常好的高階技術書籍,有很多高級的基於着色器的圖形編程知識及技巧;
更多書籍請見OpenGL官網書籍列表。
官網:
OpenGL主頁,這里有非常多的資源,如API規范(Specifications)及快速參考卡(Quick Reference Card)(強烈建議參考)、在線文檔、Wiki及所列的代碼資源和相關工具(Getting Started頁列了更多鏈接)、論壇等;
Khronos Group,OpenGL標准由該小組維護,該組織還掌管着OpenGL的嵌入式版(移動版)OpenGL ES和網頁版WebGL,以及異構並行計算語言OpenCL;
兩大顯卡巨頭的OpenGL資源:NVIDIA OpenGL、AMD OpenGL,上面有很多酷炫的Samples。
下圖是從Quick Reference Card 4.4中摘的“OpenGL Pipeline”(Specification 4.4中有詳細解釋):
頂級課程:
圖形學頂級會議SIGGRAPH和Eurographics幾乎每年都會有關於OpenGL的課程:
SIGGRAPH 2014 Introduction to modern OpenGL programming, 2013 An introduction to OpenGL programming, Efficient real-time shadows, OpenGL and DirectX, 往年的還有很多,請自行到dl.acm.org搜索“ACM SIGGRAPH 20xx Courses”並點“Table of Contents”選項卡。
Eurographics 2014 STAR State of the Art Report on Real-time Rendering with Hardware Tessellation, 2014 Tutorial Efficient Sorting and Searching in Rendering Algorithms, 更多技術報告和課程請見 Eurographics 檔案。
如果文章不能下載,請到Google學術或Google搜索,很有可能能搜到作者網站的下載鏈接,還有可能搜到報告PPT和視頻。
網上教程:
http://www.opengl-tutorial.org/:很好的教程網站,部分教程有中文版;
http://ogldev.atspace.co.uk/:被上一個網站認為是競爭對手;
http://open.gl/:同樣介紹了現代OpenGL編程;
Nehe的教程,關鍵是有中文翻譯版,但是比較老了,可以用來學習經典管線功能;
http://arcsynthesis.org/gltut/:一個非常詳盡的教程;
http://antongerdelan.net/opengl/:比較全面,除了OpenGL,還有計算機動畫相關的;
另外,OpenGL官網上也有一些教程的鏈接(Getting Started頁后面有更多),和代碼資源;
遇到編程問題,可以到Stack Overflow(一個程序設計領域的問答網站)看看是不是有人問過這個問題。
下圖是ogldev.atspace.co.uk的截圖:
計算機圖形學:
請參考我另一篇博客:計算機圖形學的學習資源。
GPU硬件:
了解GPU架構對理解OpenGL有極大幫助,可以學一學GPU編程:OpenCL、CUDA、OpenACC、C++ AMP,里面都會說GPU架構;
國內有個GPU論壇:HPC論壇,里面也有GPU的資料;
ozone3d.net和geeks3d.com上有GPU檢測或性能測試的小工具,也有示例代碼和教程;
Pennsylvania大學課程CIS 565: GPU Programming and Architecture,講了GPU編程及圖形學編程,它推薦的參考書有中譯本《大規模並行處理器編程實踐》(David B. Kirk等著,趙開勇等譯)。
下面三幅圖分別描述了CPU和GPU連接關系、GPU架構(圖中MP在CUDA書中叫做SM)、CPU架構:
(該圖取自Wikipedia,這里,該圖可能過時了,見這里)
(該圖取自Aurélien Plyer主頁,這里)
(該圖取自這里)