OpenGL ES 學習資源分享

2021-02-16 音視頻開發進階

學習了一段時間的 OpenGL ES,並在公司的項目中得到了運用,也算是有了一些積累,現在分享一些當初學習的資源,大家一起來學習,共同交流進步。

關於學習方式

在分享資源之前,簡單地聊聊學習的方式。

有句名言說的好:

書籍的人類進步的階梯

在需要解決一些未知領域的問題、完成一些未知領域的需求時,是必須要去學習一些新東西的。

而在學習這些新東西時,不要太依賴於搜尋引擎了,不然只是當下解決了某些問題、完成了某些需求。

通過看一些博客文章、看一些文章分析,在某些時刻確實是很有幫助的,但總是會存在一些碎片化知識,沒有系統地形成知識網絡,此時掌握的僅僅是技巧。還是要通過系統地去學習某些知識內容,在腦海裡面有個完整的知識體系。

這個簡單的道理大家都懂,就不多說了~

簡單上手

作為程式設計師學習一項內容,最重要的就是 Hello World 了。

《OpenGL ES 應用開發實踐指南》

這本書比較通俗易懂,直接上手使用 OpenGL ES,可以說是手把手教學了。

作為初學者,最重要的是啥?環境配置、Demo 運行呀~~~

在 《OpenGL ES 應用開發實踐指南》裡面,跟著書中的章節順序走,每一章都會有代碼示例,也算是一步步引導了。

你可以暫時不求甚解,先把示例工程運行起來,等熟練了再去深究原理。

美中不足的是,這本書針對的 OpenGL ES 版本是 2.0 的,在 OpenGL ES 3.x 中的一些特性無法體驗到了,而且現在的手機大多支持 OpenGL ES 3.x 版本了,不過要是考慮到兼容低版本的情況,還是可以使用 OpenGL ES 2.0 版本的。

這本書是翻譯過來的,它的英文原版封面如下:

《OpenGL ES 應用開發實踐指南》

簡單上手了 OpenGL ES 2.0 之後,該了解一下 OpenGL Shading Language (GLSL)了。

GLSL 就是著色器腳本語言,這個語言是用來給 GPU 運行的,靈活地使用它才能更好地掌握 OpenGL ES,要知道現在手機相機上的一些濾鏡效果都是通過 GLSL 來實現的哦。

《OpenGL® Shading Language, Second Edition》《OpenGL® Shading Language, Second Edition》

這本書是英文版的,講解了 GLSL 的一些語法,基於的版本是 OpenGL ES 2.0 的,正好和前面的書籍配套學習了,而且英文難度不大,易懂。

該書中同樣有很多例子可以實踐,比如光照、陰影、噪音等。

通過這兩本書的配套練習,可以掌握 OpenGL ES 2.x 版本的基本內容了。

當然了,除此之外,你還需要更多的練習。

可以參考這本書,獲得更多打怪晉級的經驗:

《Android 3D 遊戲開發技術寶典》

《Android 3D 遊戲開發技術寶典》一書中有很多可以在實踐中用到的內容,具體內容就等大家自行探索了~~~

高階版本

當然了,學會了 OpenGL ES 2.0 再去看 OpenGL ES 3.x 就容易多了。

這兩者在 GLSL 上是有一些變化的,另外 OpenGL ES 3.x 支持的渲染效果更好,而且支持的特性更多。

關於 OpenGL ES 3.x 版本的學習,有如下書籍推薦:

OpenGL ES 3.x 遊戲開發OpenGL ES 3.0 編程指南

在 Android 後續系統版本中,都開始使用 Vulkan 來替代 OpenGL 了。

等掌握了 OpenGL ES 之後,下一個就是 Vulkan 了~~~

另外關於書籍推薦,其實大家可以到京東或者噹噹上搜索一下關鍵字就知道了,目前市面上關於 OpenGL ES 的書籍也不多,搜來搜去也就是那幾本書啦~~~對於其他領域的書籍情況類似…

深入理解

當你已經掌握了 OpenGL ES 的大部分內容,並且可以簡單的運用他們了,這時候再想去深入理解它們,那就必須要說到 OpenGL ES 學習中的紅寶書和藍寶書了。

紅寶書指的是 《OpenGL 編程指南》,目前已經出到了第九版了,藍寶書指的是《OpenGL 超級寶典》目前已經出到了第五版了。

紅寶書與藍寶書

這兩本書就沒有前面那麼多代碼示例了,更多的是講解一些原理相關的內容,而且也不是特別針對 Android 開發環境來講的。這兩本書更多是還是當做工具書來使用,當某些知識點不清晰時,看看書查漏補缺~~~(反正我是當工具書用了)

聽說,下雨天,代碼和書籍更配哦~

顯然,光是看書是不夠的,紙上得來終覺淺,絕知此事要躬行。

在 OpenGL ES 開發中,有一些項目是必看的:

https://github.com/CyberAgent/android-gpuimage

https://github.com/BradLarson/GPUImage2

https://github.com/google/grafika

這些項目中可以看到 OpenGL ES 在相機濾鏡和視頻錄製方面的運用~

最後

俗話說:

獨學而無友,則孤陋而寡聞

光是掌握了這些書上的內容還是不夠的,更多的是需要交流和討論,讓這些知識在每一次的探討中變得更加生動靈活,不再是枯燥的代碼和理論。

那就趕緊掃碼加入我們吧~~

要是二維碼過期了,加微信 ezglume 好友,備註 OpenGL ,拉你入群~

本文中提到的書籍資源,皆可在我的 Github 地址上下載得到:

https://github.com/glumes/AndroidOpenGLTutorial

一些 OpenGL ES 學習的代碼也會在這裡,求 Star 一波 。

最後的最後,歡迎關注微信公眾號,獲得最新的內容推送~~

掃碼關注

相關焦點

  • 基於OpenGL ES的深度學習框架編寫
    背景項目組基於深度學習實現了視頻風格化和人像摳圖的功能,但這是在PC/服務端上跑的,現在需要移植到移動端,因此需要一個移動端的深度學習的計算框架
  • OpenGL glfw學習(一)初識,環境,窗口
    1.2.環境結構以筆者學習的GLFW庫為例,GLFW是一個專門針對OpenGL的C語言庫,既然是C語言庫,那我們一定需要有C語言的編譯環境。GLAD庫比較特殊,進入官網後在網頁上設置自己的opengl版本,點擊GENERATE生成特定的GLAD包,再下載就好。 為方便開發,接下來要組裝一個開發目錄。新建opengl文件夾,將GLFW目錄中的include目錄複製到opengl中去。
  • 原創 | 學好opengl走遍天下都不怕系列《基礎篇》
    前言最近本來是想認真學習下《opengl es第三版》這本書,無奈內容過於生澀,有點看不下去,偶遇opengl-tutorial.org
  • Shader 入門:GLSL ES(簡介和基本語法)
    歡迎來到我的 Shader 入門系列文章,在本系列文章中我將和大家一起學習 Shader 相關知識,以便於我們閱讀和編寫 Shader。
  • 了不起的 Creator Shader 修仙之路—GLSL ES(簡介和基本語法)
    歡迎來到我的 Shader 入門系列文章,在本系列文章中我將和大家一起學習 Shader 相關知識,以便於我們閱讀和編寫 Shader。
  • OpenGL ES 3.0 實例化(Instancing)
    利用內建變量gl_InstanceID在 3D 空間繪製多個位於不同位置的立方體,利用 u_offsets[gl_InstanceID]對當前實例的位置進行偏移,對應的著色器腳本:// vertex shader GLSL#version 300 es                            layout(location = 0) in
  • opengl實踐-從零開發遊戲
    作者:愛幹球的RDlearnopengl是一套很棒的opengl教程,深入淺出、有源碼且免費,除了說良心,不知道還能用什麼詞彙來形容這種高水平且善良的公益行為
  • NDK OpenGL ES渲染系列 之 繪製三角形
    前言新的知識學習都是循序漸進的,從基礎到複雜。
  • CSharpGL(0)一個易學易用的C#版OpenGL
    你可以:繪製模型你可以用legacy opengl(glVertex)或modern opengl(VBO+Shader)繪製模型。當然這是最基本的功能。CSharpGL提供一個GLCanvas控制項供你進行繪製。使用紋理(貼圖)你可以用legacy opengl(glVertex)或modern opengl(VBO+Shader)為模型貼上貼圖。
  • 面試中經常被問到的 OpenGL ES 對象,你知道的有哪些?
    本例中頂點著色器和片段著色器增加 color 屬性://頂點著色器#version 300 es                            layout(location = 0) in vec4 a_position;   // 位置變量的屬性位置值為 0 layout(location = 1) in vec3 a_color;
  • 【教程】書寫新技能get——圓體字ES詳細版教程來了
    在學習字體之前我們先來了解一下點尖英文書法的主要工具。首先就是你們知道的斜杆筆,圖中是我正在用的一支斜杆,前端金色的部分叫做法蘭是用來固定筆尖的。然後我們開始學習es的書寫吧。簡單可以分為這幾個部分。首先給大家介紹練習紙。
  • Android OpenGL ES 從入門到精通系統性學習教程
    因為在工作中頻繁使用 OpenGL ES 做一些特效、濾鏡之類的效果,加上平時學到的的知識點也比較細碎,就想著去系統地學習下 OpenGL ES 相關開發知識,並將學習過程記錄下來。另外,這個 Android OpenGL ES 極簡教程的主要目的是為下一階段的音視頻開發做準備。一些同學反映,學習這個教程感覺有點門檻。
  • 分享一波日語學習資源
    自從吃了沒文化的虧後也經常為大家分享一些學習資料,從昨天老夜在微信公眾號內發布一些英語學習資料後越來越多的小夥伴求知慾就上來了,紛紛留言有莫有日語相關的視頻學習資料,既然大家誠心誠意的問了這裡老夜也就不藏著掖著了,將網盤裡面的視頻資料整理一下分享給大家,希望大家認真做好功課,畢竟學好一門外語還是大有用處的,體會一下看外語電影沒有字幕的感覺就知道了~首先就是老夜BD盤裡面的日語教學視頻資源了
  • 學習OpenGL ES之教你造一面鏡子
    本文代碼依然延續學習OpenGL ES的項目代碼,任何之前已經介紹的代碼將不再介紹。所以你真的想看懂本文的話,至少對OpenGL和本系列Demo項目有基本的了解。之前的代碼中一直使用GLK的方法生成觀察矩陣,這次我對攝像機進行了封裝,主要是為了更方便的進行鏡像。攝像機的類是Camera。主要功能是生成攝像機和鏡像攝像機。
  • OpenGl ES 基礎入門知識
    版本渲染管線的某些階段,具體為:Vertex Shader(頂點著色器)用於替換頂點處理階段Fragment Shader(片元著色器)用於替換片元處理階段OpenGL 著色語言OpenGL 著色語言 GLSL 全稱為 OpenGL Shading Language,是為了實現著色器的功能而向開發人員提供的一種開發語言,語法與 C 語言類似,下面分為以下幾點來學習
  • UE4精品課程 | OpenGL學習筆記(三)繪製三角形/四邊形
    LearnOpenGL的學習筆記,如有書寫和理解錯誤還請大佬扶正;教程連結:https://link.zhihu.com/?需要讓當前窗口的環境在當前線程上成為當前環境,就是接下來的畫圖都會畫在我們剛剛創建的窗口上 glfwMakeContextCurrent(window); //告訴GLFW我們希望每當窗口調整大小的時候調用這個函數 glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); //glad尋找opengl
  • 資源分享 | 梵文網絡學習資源匯總
    本文旨在給對梵語學習感興趣的朋友們提供一些有用且無(低)成本的學習資源。梵語自學難度較高,尤其到後期接觸Sandhi轉寫時最好可以有專業人士指導,但早期基本詞語詞法尚可通過自學完成。本文所列舉資源絕大部分只能對梵語學習起到輔助作用,對最難的句間語法少有涉及,在學習時務必購買一本優質完整的教材(文章最後部分有教材推薦)。
  • 資源分享 | 拉丁語網絡學習資源匯總
    文字 | Blanche,  ZZQ 編輯 | 零P_Spruce, Blanche本文旨在分享一些較為實用的拉丁語網絡學習資源,希望能夠對大家的學習有幫助。dt_dapp=1&dt_platform=com.douban.activity為數不多的用中文教授拉丁語的免費課程,由人大古典學教授雷立柏主講,使用的教材是肖原編著的《拉丁語基礎》,適合英語不是很好或者不想花很多錢卻又十分想學習拉丁語的人。3.
  • 乾貨|寶藏西語學習資源推薦,還不快收藏!
    Practica Españolhttps://www.practicaespanol.com/適合人群:A1-C2各級別學習者Practica Espanol隸屬於世界影響力最大的通訊社—EFE,屬於西班牙半官方性質的通訊社。
  • 什麼是雙元制(duales studium)大學生?
    雙元制大學生(duales studium)是德國大學在總結傳統德國職業教育的先進經驗的基礎上,將職場實訓和大學理論學習結合起來的一種雙重學習方式。近十幾年來,隨著巴登符騰堡州雙元制大學模式的興起, 德國的應用科學大學(FH)和部分綜合型大學(Uni)紛紛開設了這種校企聯合培養人才的模式,將雙元制實訓與大學教育結合起來,在大學裡開設雙重研究(duales studium)項目,習慣上這些學生被稱為「雙元制大學生」。