[CS193P] 第十九堂課摘要及心得筆記

在最後一堂的課程當中,我們將簡略的學習OpenGL ES的一些概念,讓我們對iPhone平台上的3D遊戲開發多增加一些概念。還請大家多多指教!
評論
評論

在最後一堂的課程當中,我們將簡略的學習 OpenGL ES 的一些概念,讓我們對 iPhone 平台上的 3D 遊戲開發多增加一些概念。還請大家多多指教!

OpenGL 簡介

OpenGL 是一套跨語言、跨系統的軟體介面,藉由這些函式讓我們可以用同樣的語法操作不同的繪圖硬體,並產生 2D、3D 的圖像。而 OpenGL ES 就是專門設計給行動裝置使用的 OpenGL 版本,擁有 OpenGL 的許多功能,是一個子集合。

但要注意的是,許多現在通用的 OpenGL 書籍、函式庫,並不能直接在 OpenGL ES 上使用,必須多加注意。

而 OpenGL 是一個狀態機,會紀錄當下的環境狀態,像是繪圖的顏色等資訊,而直到我們呼叫函式改變。

像是以下這些函式變可以修改狀態:

glEnable(); glDisable(); glMatrixMode(); glBindFramebufferOES(); glViewport(); glVertexPointer(); glColorPointer(); glTranslatef();…

而根據不同的狀態,我們呼叫同樣的函式也可能會有不同的結果。像是以下這些繪圖函式:

glDrawArrays(); glDrawElements();…

便會依照前面所修改的狀態,進行對應的繪圖功能。

座標系統

要進行繪圖必然得先有定位的系統,才能與繪圖介面進行溝通。在 OpenGL 中便提供多種呈階層關係的座標系統,分別是:

  • Window Coordinates
  • Normalized Device Coordinates
  • Clip and Eye Coordinates
  • World Coordinates
  • Object Coordinates

Windows Coordinates 就是以螢幕的左上角的點為 (0,0),一直延伸到 iPhone 的右下角,也就是 (320, 480),與我們以前用 UIView 的座標系統相當類似,如下圖:

而 Normalized Device Coordinates 是將螢幕的正中央設定為 (0,0,0),做一個四邊體的 3D 空間,如下圖:

Eye Coordinates 則是以使用者的眼睛作為 (0,0,0),在螢幕後方投影出一個四邊體的 3D 空間,如下圖:

World Coordinates 便是用來描述場景的座標,我們通常會透過這個座標來描述物體和光源的位置。而 Object Coordinates 則是對每個不同的物件所使用的獨立座標系統。

基本上,這些座標系統可能對初次接觸的讀者來說有點複雜,有興趣的讀者可以上網參考相關網站,以便釐清觀念。

幾何繪圖

OpenGL ES 可以繪製三角形、線還有點,透過這幾個基本的元素,變可以讓我們畫出其他更複雜的 3D 立體物件。而在繪製的操作上,我們主要透過提供給 OpenGL 一系列儲存在陣列的頂點,讓其能夠沿著這些頂點繪製出我們所需要的圖形。

此外,我們也可以針對每個頂點設定 RGBA 的顏色,OpenGL 便會依照頂點的顏色填滿所繪製出來的三角形或是線。而這些顏色,也是透過陣列的方式傳遞。

傳遞進去的頂點順序也是值得注意的一部分,以下是幾種常用的圖形所規定的順序:

虛線的部份則是代表著正反面的差別,我們可以看到右手邊的 GL_TRIANGLES 的順序是逆時針的,其正面便會朝上。而右手邊、順時針的則是反面朝上。

在課程的影片中有示範如何透過 GL_TRIANGLE_STRIP 在 3D 空間中繪製四面體,有興趣的讀者還請務必參考。

材質貼圖

當我們順利完成 3D 模型的繪製,我們也會希望在這些 3D 物件上能夠有漂亮的外觀。我們可以透過使用材質貼圖來協助。這些材質其實就是儲存在記憶體中的 2D 影像圖檔,如下:

而我們只需要將繪圖的各個頂點,分別對應到材質上的 (u, v) 座標,OpenGL 就會幫我們完成貼圖。

然而,假使我們要繪製一個四面體,若是針對每一個面都要切換材質這樣會很沒有效率。因此,我們可以設計一個大張的材質,讓每一面都可以透過同一材質進行貼圖。

在課程影片中,同樣有對於貼圖進行示範,有興趣的讀者還請參考。

其他細節

OpenGL ES 目前有兩種版本,分別是 1.1 和 2.0 版。在 iPhone 3GS 以前,所有的裝置均只支援 1.1 版。而本次課程的內容也均為 1.1 版的內容。

由於 OpenGL ES 2.0 做了相當大的改變,以使用 shader 為主,提供了更多的彈性卻也更難上手。若只是要設計一般的 3D 遊戲,那其實只需要使用 1.1 版就可以有很好的效果。

結論

這次的課程內容雖然只涵蓋到了 OpenGL ES 中的很小部份,但卻讓我們對於 iPhone 上的 3D 繪圖有了基本的認識。本連載在此畫下了句點,以後筆者仍然會繼續在 Inside 團隊中撰寫、分享 iPhone 平台的開發心得,還請大家繼續支持!

參考資源


AWS For Data Web Day:5 / 25 免費線上研討會,帶領企業制定現代化數據戰略

AWS 將於 2022 年 5 月 25 日 下午 2:00~5:00 舉行線上研討會 AWS For Data Web Day,以「數據與分析」為本次活動主旨,幫助企業制定現代化數據戰略,除了精彩內容外,同時也邀請了 3 位知名產業經驗的客戶進行分享,讓您了解在產業實務上 AWS 如何協助企業進行轉型。
評論
評論

數位轉型是一段不斷學習與創新的過程。身為雲端服務龍頭,AWS 從過去到現在從未停止創新,且為了幫助企業客戶在數據為王的時代,能有效利用數據資料獲得深入洞察、搶得市場先機,AWS 將於 2022 年 5 月 25 日 下午 2:00~5:00 舉行線上研討會 AWS For Data Web Day,以「數據與分析」為本次活動主旨,幫助企業制定現代化數據戰略。

2022 年的關鍵任務:制定現代化數據戰略

在討論元宇宙拓荒、搶佔新興科技商機以前,企業是否已經紮穩腳步,建置完善的數據資料庫,建構業務創新的重要基礎?在邁向新時代的關鍵 2022 年,此刻最重要的任務之一,是制定現代化的數據戰略,幫助企業持續數位轉型。對此,AWS For Data Web Day 線上研討會內容,將包含 Amazon DynamoDB 的十年創新之旅,帶領參與者進行新功能重點探討,並且同步深入了解 AWS 現代化企業數據遷移實戰、現代化數據平台大戰略、數據創新與加速分析應用等。

除了詳細解說數據對您企業帶來的影響之外,也邀請到 AWS 實際企業客戶分享成功案例,加速了解如何運用數據與分析進行產業數位轉型。

如何透過 AWS 獲得成功?重量級客戶親自揭密

AWS For Data Web Day 線上研討會本次邀請了重量級來賓,成功企業包含全方位寵物管家 萬達寵物、大數據智能資料稽核與保護的專家 – Datiphy 以及企業數據資產整合專家 – eForce,以上三間知名企業,將親自講授他們是如何透過 AWS 獲得成功,並且在數位轉型上取得領先的地位。

本場研討會,在深入了解該如何提升數據分析的效能的同時,又能兼具成本效益高與安全性;適合對於如何靈活應用大數據、對數據分析有興趣、想要建構數據與分析基本功的所有受眾,例如:公司技術部門決策人、業務決策人、IT 主管及希望深入認識數據分析的任何人士。與會期間參與問答,還有機會抽中百元美食外送平台優惠券。

在 AWS For Data Web Day 中探討雲端數據資料庫的優勢與做法,包括:

  1. 20 萬多個資料湖在 AWS 上執行
  2. 使用 Amazon EMR 比標準 Apache Spark 快 3 倍
  3. 比其他雲端資料倉儲更實惠的價格效能達 3 倍
  4. 使用 Amazon OpenSearch Service 在單個叢集中儲存的資料量可達 3PB
  5. 節省 70% 資料湖中資料的儲存成本

AWS For Data Web Day 報名須知

  • 日期:2022 年 5 月 25 日(星期三)
  • 時間:2:00 PM~5:00 PM
  • 形式:線上研討會

建議在活動前免費註冊 AWS 帳號  ,新註冊戶可兌換精美好禮三合一數據線。若為首次參加線上研討會者,GoToWebinar 會自動偵測電腦配置,可在加入時自動安裝;若是使用手機登入此活動,則需安裝 GoToWebinar 手機應用程式。