OpenGL ES.

Slides:



Advertisements
Similar presentations
E-portfolio 個人履歷網站教學
Advertisements

LinkIt ONE開發板的簡介.
LED CUBE 預期規劃.
Introduction to C Programming
圓的一般式 內容說明: 由圓的標準式展出圓的一般式.
圓的一般式 內容說明: 由圓的標準式展出圓的一般式.
Unity3D.
2015/Spring 跨平台行動程式進階應用 王派洲老師
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
科學科 污染 空氣 成因 的 : 題目 及 減少空氣污染的方法 陳玉玲 (4) 姓名 : 去到目錄.
第 1 章 使用 APP INVENTOR 2 開發 ANDROID APP
程式語言的基礎 Input Output Program 世代 程式語言 第一世代 Machine language 第二世代
程式設計概論 1.1 程式設計概論 程式語言的演進 物件導向程式 程式開發流程 1.2 C++開發工具
Q101 在701 SDX Linux上的標準安裝與使用程序v2
第一篇 Unix/Linux 操作介面 第 1 章 Unix/Linux 系統概論 第 2 章 開始使用 Unix/Linux
第1章 認識Arduino.
手機作業系統介紹.
ANDROID 中的 3D 繪圖 作者:陳鍾誠.
類別(class) 類別class與物件object.
R教學 安裝RStudio 羅琪老師.
嵌入式系統進階 日期 : 2018/12/4.
ASP.NET基本設計與操作 建國科技大學 資管系 饒瑞佶 2007年.
CHT IPv6測試 D-Link Taiwan 友訊科技台灣分公司 TTSS 電信技術支援課 Name:
安裝JDK 安裝Eclipse Eclipse 中文化
12-1 類比/數位(A/D)轉換IC 2018/12/25 第12章 類比/數位(A/D)介面實習.
11-1 液晶顯示器(LCD) 2018/12/31 第11章 液晶顯示器LCD介面實習.
Geogebra 4.2在國中數學外心、內心、重心的應用 南寧高中 張家鼎 老師
幾何變換 Geometry Transformations
6.1 利用正弦公式及餘弦公式解三角形 正弦公式.
6B冊 趣味活動 認識立體圖形中的頂、棱和面 柱體的頂、棱和底邊 錐體的頂、棱和底邊.
網路安全技術 OSI七層 學生:A 郭瀝婷 指導教授:梁明章.
虎克定律與簡諧運動 教師:鄒春旺 日期:2007/10/8
Topic Introduction—RMI
圖片格式簡介 張啟中.
Ch20. 計算器 (Mac 版本).
辨認三角形的種類 小學三年級數學科.
第一章 直角坐標系 1-3 函數圖形.
第 19 章 XML記憶體執行模式.
本章學習目標 學習極座標繪圖與對數繪圖 學習雙y軸繪圖 學習向量場繪圖 學習統計繪圖 在Matlab的環境裡製作動畫
網頁程式概論 建國科技大學資管系 饒瑞佶 2015/9 V1 2016/4 V2 2016/9 V3.
本章學習目標 學習三維繪圖的基本技巧 學習peaks() 函數的用法 學習二維與三維等高線圖的繪製 學習三維圖形的編修
指導老師:周建興 老師 開發團隊:吳旻翰、池宗諺 淡江大學電機工程學系 2015/12/11
做做看。 5 算出塗色部分周長及面積。 1 (2+4)×2=12 2×4=8 12+8=20.
智慧型手機程式設計 建國科技大學資管系 饒瑞佶 2011年(992).
利用 EditorConfig 自訂文字編輯器設定
體積.
Video 影像 (VideoPlayer 影像播放器、Camcorder 錄影機) 靜宜大學資管系 楊子青
正弦公式和餘弦公式  正弦公式 餘弦公式 c2 = a2 + b2 – 2abcosC 或.
PowerPoint 操作介紹 106 計算機概論
陣列與結構.
程式移植.
座標系統與圖形介面 分子結構的建立.
進階UI元件:ListView元件以及複選 靜宜大學資管系 楊子青
5. 令圖畫動起來 Tween 功能介紹 移動效果 顏色漸變效果 形狀漸變效果 離開.
6.1 動畫檔案的格式 6.2 建立合適的動畫元素.
第一章 直角坐標系 1-3 函數及其圖形.
資料結構與C++程式設計進階 期末考 講師:林業峻 CSIE, NTU 7/ 15, 2010.
Cloud Training Material- 事件 Sherman Wang
Activity的生命週期: 播放音樂與影片 靜宜大學資管系 楊子青
小畫家教學 電子版儲存於 學校網頁/學科資訊/電腦科
What is “this”? 在物件導向程式設計中,類別的定義就是在說明如果創建了“這個物件”的話,它會具有那些屬性與功能,以及這些功能是如何實現的。 而所謂的“這個物件”就以 this 來表示。 當我們在JavaScript與jQuery中寫 script 程式(函式)時,“誰”呼叫這個函式,這個“誰”就是該函式中所謂的.
在直角坐標平面上兩點之間 的距離及平面圖形的面積
影像顯示.
Windows Phone Game 行動遊戲開發
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
NFC (近場通訊, Near Field Communication) 靜宜大學資管系 楊子青
Chapter 4 Multi-Threads (多執行緒).
Develop and Build Drives by Visual C++ IDE
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
CHT IPv6測試 D-Link Taiwan 友訊科技台灣分公司 TTSS 電信技術支援課 Name:
Presentation transcript:

OpenGL ES

OpenGL ES API讓Android的繪圖能力大幅提昇,它繪圖與圖形處理的能力幾乎只受限於應用程式開發者的想像力;此外,它更能充分利用Android裝置所提供的圖形處理單元(GPU,Graphics Processing Unit),加速圖形處理的效率。

一、OpenGL與座標系統 OpenGL架構評審委員會(ARB)負責維護OpenGL的規範,目前最新版本(本書撰寫時)為2012年8月發表的OpenGL 4.3。 OpenGL對裝備硬體的需求很大,這需求一般已經超出一些嵌入式系統或行動裝置的規格,因此Khronos在2000年推出了專門用於嵌入式系統或行動裝置的OpenGL ES版本,其中ES表示(Embedded System),目前最新的版本是OpenGL ES 3.0。

Android系統從Android 1. 0開始支援OpenGL ES 1. 0與1. 1的API,而從android 2 Android系統從Android 1.0開始支援OpenGL ES 1.0與1.1的API,而從android 2.2(level 8)開始支援OpenGL ES 2.0。 對行動裝置而言,OpenGL定義的座標系統以水平軸為X軸(相對於裝置螢幕)、右向為軸的正向,以垂直為Y軸、軸的正向為向上,Z軸垂直於裝置螢幕、以離開螢幕方向為正。

二、OpenGL ES應用的主要類別 要在應用程式中透過OpenGL ES API建立或操作圖形,需要2個基本類別:「GLSurfaceView」類別與「GLSurfaceView.Renderer」介面。 GLSurfaceView 用以繪製或操作圖形的視圖,我們應該建立此類別的實體,並將從GLSurfaceView.Renderer介面實作的類別加入其中;如果要讓此視圖能與使用者互動,這個類別還必須實作觸控事件的偵聽器。

GLSurfaceView.Renderer 這介面定義了要在GLSurfaceView上繪圖所需要的方法;應用OpenGL ES時候,需要自建一個繼承此介面的子類別,並實作以下方法: onSurfaceCreated():當建立GLSurfaceView物件的時候,系統會自動呼叫此方法,一般利用此方法進行初始化的設定。 onSurfaceChanged():每一次要繪製或重繪GLSurfaceView物件,系統都會呼叫此方法,功能類似於View物件的onDraw()方法,這方法是執行圖形繪製的主要地方。 onDrawFrame():當GLSurfaceView物件大小或方位發生變化時,系統將呼叫此方法,一般利用此方法處理其內容如何對GLSurfaceView物件幾何變化產生的回應。

完成此自建類別之後,在應用程式的活動類別中,還需要透過GLSurfaceView實體物件的「setRenderer()」方法,將此類別(稱為描繪器)設定給使用的GLSurfaceView物件。

三、繪製平面形狀 OpenGL ES只支援繪製三角形,而任何形狀(平面或立體)都能由三角形構成。 三角形 因為OpenGL是以繪製3維圖形為主要目的,因此每一個點都有3個座標值,對於平面圖形只要將其Z軸座標設為固定就可以了。 OpenGL ES預設以GLSurfaceView影格的中心為原點,(1, 1, 0)為影格右上角,(-1, -1, 0)為影格左下角。形狀頂點座標定義要採反時鐘方向。

四邊形 四邊形以2個三角形組合而成。 除了要注意三角形本身頂點的順序為反時鐘順序以外,這2個三角形彼此之間的頂點順序也要注意。

投影 OpenGL預設GLSurfaceView為正方形,但在實際裝置中甚少有方形的顯示區域,因此繪出的圖形會因為顯示區域實際長寬比例而產生變形。 為了解決以上現象,OpenGL提出透視投影的觀點。 透視投影是依據GLSurfaceView的長寬比調整繪圖物件座標的一種轉換,一般會將此轉換置於「onSurfaceChanged()」方法中,這樣就能避免因螢幕方位變化而影響圖形的顯示。

要應用透視投影模式,必須先透過GL10物件的「glMatrixMode(GL10 要應用透視投影模式,必須先透過GL10物件的「glMatrixMode(GL10.GL_PROJECTION)」方法轉換成透視投影矩陣模式,再用最近、最遠可視範圍與視角,計算出視域的寬度與高度(高度可以從寬度推得),然後用「glFrustumf()」計算出透視投影矩陣。 OpenGLShape Test範例 範例詳細內容請參考原書。

四、3D圖形與動畫 OpenGL主要是用於繪製3D物體,而且它繪製的方法與平面形狀幾乎相同。 OpenGLCube Test範例 在場景上建立一個不斷繞自己Y軸旋轉的立方體。 範例詳細內容請參考原書。

五、用onTouch事件產生互動旋轉動畫 GLSurfaceView類別也提供有「onTouchEvent()」方法,只要覆寫這個方法,就能偵聽觸控事件,並依觸控類型設計互動的動作。 OpenGLInteractive Test範例 使用者用手在螢幕上水平(沿X軸)滑動,控制立方體沿Y 軸轉動方向。 範例詳細內容請參考原書。