一、OpenGL ES 簡介
在上一章中,我們介紹了OpenGL,知道了它是用於計算機圖形繪製的編程接口標準,支持不同平台上的圖形繪製,在計算機上發揮了重要作用。
後來,隨着手機等移動設備性能的快速提高,人們已經不滿足於將移動設備的應用止於通訊應用、記事等傳統平面應用。而越來越注重移動設備功能的多樣化、娛樂化,手機3D遊戲、GPS導航系統等代表了未來移動設備發展的方向。
基於這種情況,Khronos 組織於 2003 年 7 月發布了專門針對於嵌入式設備圖形開發的標準 OpenGL ES (OpenGL for Embedded Systems)。
二、WebGL 簡介
WebGL,是一項用來在網頁上繪製和渲染複雜三維圖形(3D圖形),並允許用戶與之交互的技術。隨着個人計算機和瀏覽器的性能越來越強,我們能夠在Web上創建越來越精美、越來越複雜的3D圖形。
從傳統意義上來說,為了顯示三維圖形,開發者需要使用 C 或 C++ 語言,輔以專門的計算機圖形庫,如OpenGL或Direct3D,來開發一個獨立的應用程序。
現在有了 WebGL,我們只需要向已經熟悉的 HTML 和 JS 中添加一些額外的三維圖形學的代碼,就可以在網頁上顯示三維圖形了。
WebGL 是內嵌在瀏覽器中的,不必安裝插件和庫就可以直接使用它。
三、三者關係
OpenGL ES 可以說是 OpenGL 為了滿足嵌入式設備需求而開發一個特殊版本,是其一個子集;而 WebGL,是為了網頁渲染效果,將 JavaScript 和 OpenGL ES 2.0 結合在一起,通過增加 OpenGL ES 2.0 的一個JavaScript綁定得到。
基本關係如下圖所示:
在實際應用過程中,前端的 WebGL 是通過 JS 語句,操作本地的OpenGL的部分接口,對於移動設備這是操作OpenGL ES的接口,來實現頁面的圖形的渲染,WebGL只是綁定外面接口的一層,內部的一些核心內容,如着色器,材質,燈光等都是需要藉助 GLSL 語法來操作的。
三者的版本關係如下圖所示:
四、三者區別
WebGL 與其他 OpenGL 最大差別就是其可以通過 HTML 腳本本身實現 Web 交互式三維動畫的製作,無需任何瀏覽器插件支持。
OpenGL ES 和 OpenGL 最大差別就是兩者應用場景不一樣,一個是計算機,一個是移動或嵌入式設備。這種差別體現在兩個方面:
窗口系統不一樣。OpenGL ES 是一個平台中立的圖形庫,在它能夠工作之前,需要於一個實際的窗口系統關聯起來,這一點 OpenGL 也是一樣的。
但是 OpenGL 時代在不同平台上有不同的機制一關聯窗口系統,在 Windows上是wgl,在X-Window上市 xgl ,在 Apple OS 上是 agl 等。
而嵌入式市場的平台種類不計其數,單是學習各家手機操作系統的接口就是很大負擔了,更不用說致力於支持各種尺寸平台的軟件開發者,所以OpenGL ES 提供了Window Surface的抽象,使得移植工作基本可以局限在重新實現一下建立窗口的過程。
這個窗口工具是 EGL, 全稱: embedded Graphic Interface,是 OpenGL ES 和底層 Native 平台 視窗系統之間的接口。
功能規模不一樣。嵌入式設備和移動設備追求的是高性能,因此 OpenGL ES 相對OpenGL 刪減了一切低效能的操作方式,有高性能的決不留低效能的,即只求效能不求兼容性(和蘋果的作風類似)。
————————————————
版權聲明:本文為CSDN博主「特快倉鼠」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_23034515/article/details/108283747
-- END --
進技術交流群,掃碼添加我的微信:Byte-Flow
獲取視頻教程和源碼
推薦:
Android FFmpeg 實現帶濾鏡的微信小視頻錄製功能
抖音傳送帶特效是怎麼實現的?
所有你想要的圖片轉場效果,都在這了
熟悉 OpenGL VAO、VBO、FBO、PBO 等對象,看這一篇就夠了
OpenGL ES 3.0 FBO 離屏渲染(校正版)
你不是說 OpenGL 無所不能嗎?刮刮卡實現下