OpenGL是3D圖形接口工業標準,使用上很是簡單,全部API不過上百個函數,但理解OpenGL就沒那麼簡單,本文總結OpenGL的學習資源,包括官方資料、網上教程、示例程序等。php
Wikipedia:html
OpenGL,介紹了OpenGL的歷史及版本;git
Graphics processing unit,介紹了GPU,因爲OpenGL更像個底層驅動,瞭解GPU對理解OpenGL很重要。github
書籍:web
紅寶書(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,很是好的高階技術書籍,有不少高級的基於着色器的圖形編程知識及技巧;ide
更多書籍請見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主頁,這裏)
(該圖取自這裏)