国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Android中建立一個OpenGL ES的開發環境

移動開發 Android
在使用OpengGL ES 2.0的API時,也許你會很奇怪這些方法中為什么會包含有GL10參數,這是因為這些方法的簽名是重用了2.0的API,以保證Android框架的代碼更加簡單。

要用OpenGl ES在應用程序中繪制圖像,首先你要創建與之對應的視圖容器。

當中最直接的方法就是使用GLSurfaceView和GLSurfaceView.Renderer接口。

GLSurfaceView是OpenGL所繪制的圖形的視圖容器,而GLSurfaceView.Renderer控制在視圖上所繪制的圖像。想獲取更多關于這兩個類的信息,請參考OpenGl ES開發指南

GLSurfaceView只是把OpenGL ES圖像組合到應用程序的其中一種方法,但對于繪制全屏或接近全屏的圖形來說,它是一個很好的選擇。開發者如果想把OpenGL ES圖像組合成布局中的一小部分,可以查看TextureView。事實上,獨立開發者也可以在SurfaceView上創建OpenGL ES視圖,但這需要寫更多額外的代碼。

這節課將介紹如何在應用程序中***限度地實現GLSurfaceView和GLSurfaceView.Renderer。

在Manifest聲明OpenGL ES的使用 Declare OpenGL ES Use in the Manifest

要在應用程序中使用 OpenGL ES 2.0 API,你必須在Manifest添加以下的聲明:

  1. <uses-feature android:glEsVersion="0x00020000" android:required="true" /> 

如果你的應用程序中使用到了紋理壓縮,你必須聲明應用程序所支持的壓縮格式,以便提醒不支持這些格式的設備不會嘗試運行你的應用程序:

  1. <supports-gl-texture android:name="GL_OES_compressed_ETC1_RGB8_texture" /> 
  2. <supports-gl-texture android:name="GL_OES_compressed_paletted_texture" /> 

想獲取更多關于紋理壓縮格式的信息,請參考OpenGl ES開發指南。

創建OpenGL ES的Activity Create an Activity for OpenGL ES Graphics

Android使用到OpenGL ES的應用程序和其他的應用程序的activities一樣,都有一個用戶界面。當中***的不同就是,在activity的布局中你使用了什么控件,在很多應用中,你可能會使用TextView,Button和ListView,在使用了OpenGL ES的應用程序,你還可以添加GLSurfaceView。

下面的示例代碼中,呈現了一個Activity使用GLSurfaceView作為主視圖的***實現:

  1. public class OpenGLES20 extends Activity { 
  2. private GLSurfaceView mGLView; 
  3. @Override 
  4. public void onCreate(Bundle savedInstanceState) { 
  5.     super.onCreate(savedInstanceState); 
  6.     // Create a GLSurfaceView instance and set it 
  7.     // as the ContentView for this Activity. 
  8.     mGLView = new MyGLSurfaceView(this); 
  9.     setContentView(mGLView); 

備注:OpenGL ES 2.0需要Android2.2(API 8)以上使用,請確定你的Android工程的API設置正確。

創建GLSurfaceView對象 Build a GLSurfaceView Object

GLSurfaceView是一個可以繪制OpenGL ES圖像的專門視圖,它本身沒有處理功能,所繪制的圖像都是由你所設置的GLSurfaceView.Renderer來控制的。事實上,該對象的代碼很簡單,你可能寧愿自己創建一個沒有定義好的GLSurfaceView實例,而不去繼承它,但是千萬不要這樣做。你需要繼承這個類,才能捕獲觸摸事件,這些將會在Responding_to_Touch_Events |觸摸響應這節課中有介紹到。

GLSurfaceView的必要代碼是很少的,為了一個快速的實現,最常見的做法是在activity中創建一個內部類:

  1. class MyGLSurfaceView extends GLSurfaceView { 
  2. public MyGLSurfaceView(Context context){ 
  3.     super(context); 
  4.     // Set the Renderer for drawing on the GLSurfaceView 
  5.     setRenderer(new MyRenderer()); 

在使用OpenGL ES 2.0時,你必須在你的GLSurfaceView構造器中添加多一句代碼,以聲明你是使用OpenGL ES 2.0的API:

  1. // Create an OpenGL ES 2.0 context 
  2.  setEGLContextClientVersion(2); 

備注:如果你使用的是OpenGL ES 2.0的API,請確認你已經在應用程序的manifest進行了聲明。更多的信息,請參考在Manifest聲明OpenGL ES的使用 Declare OpenGL ES Use in the Manifest

使用GLSurfaceView.RENDERMODE_WHEN_DIRTY可以設定GLSurfaceView實現的渲染模式:當應用程序的圖數據發生變化時,才繪制試圖。該設置是可選的,設置如下:

  1. // Render the view only when there is a change in the drawing data 
  2. setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); 

該設置可以防止GLSurfaceView圖像被重新繪制,直到你調用了equestRender())方法,這在樣例應用程序中更體現了其的價值。

創建渲染器類 Build a Renderer Class

GLSurfaceView.Renderer類或渲染器的實現,使得使用了OpenGL的應用程序開始變成一個有趣的事情。這個類控制與之關聯的東西可以被繪制在GLSurfaceView。渲染器中提供了三種方法給Android系統調用,以控制什么可以,以及怎樣繪制在GLSurfaceView上。

* onSurfaceCreated()) - 設置視圖的OpenGL ES環境,只需調用一次

* onDrawFrame()) - 重新繪制每個視圖時調用

* onSurfaceChanged()) - 視圖的幾何發現變化時調用,例如,設備的屏幕的方向發生變化

下面是對于OpenGL ES渲染器一個很基本的實現,只在GLSurfaceView上繪制了一個灰色的背景:

  1. public class MyGL20Renderer implements GLSurfaceView.Renderer { 
  2. public void onSurfaceCreated(GL10 unused, EGLConfig config) { 
  3.         // Set the background frame color 
  4.         GLES20.glClearColor(0.5f, 0.5f, 0.5f, 1.0f); 
  5.     } 
  6.     public void onDrawFrame(GL10 unused) { 
  7.         // Redraw background color 
  8.         GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT); 
  9.     } 
  10.     public void onSurfaceChanged(GL10 unused, int width, int height) { 
  11.         GLES20.glViewport(00, width, height); 
  12.     } 
  13.     } 

這就是這節課所介紹的所有東西。上面的示例代碼創建了一個簡單的應用程序:使用OpenGL繪制灰色的背景。雖然代碼沒有做什么有趣的事情,但是通過建立這些類,你奠定了使用OpenGL繪制圖像的基礎。

在使用OpengGL ES 2.0的API時,也許你會很奇怪這些方法中為什么會包含有GL10參數,這是因為這些方法的簽名是重用了2.0的API,以保證Android框架的代碼更加簡單。

如果你對OpenGL ES的API已經熟悉,你已經可以在你的應用程序中建立OpenGL ES環境并且繪制圖形了。但是,如果你還需要更多的幫助來開始OpenGL,你可以繼續下節課的學習,以獲取更多的提示。

責任編輯:閆佳明 來源: wiki.eoe.cn
相關推薦

2014-04-29 14:16:54

2019-09-03 11:32:36

PythonLinux操作系統

2014-08-13 19:14:26

2015-03-27 18:05:00

2010-08-19 10:02:25

AndroidEclipseUbuntu

2016-08-04 14:08:57

前端javascripthtml

2023-05-09 07:10:53

2020-09-17 10:58:58

IT文化首席信息官領導者

2017-06-22 10:44:55

Linux調試器準備環境

2009-12-09 09:47:05

ibmdwRational

2016-11-07 21:15:12

前后端分離expressJavascript

2016-08-11 17:09:14

Javascripthtml前端

2016-11-07 21:24:08

HtmlNode.jsJavascript

2014-04-29 14:27:59

OpenGL ES 2Android繪制紋理

2014-04-29 14:05:02

OpenGL ESAndroid添加動作

2023-02-01 16:36:31

GNOMEChatGPTLinux

2013-09-26 14:09:31

iOS開發OpenGL ES教程繪制矩形

2014-04-24 13:26:24

OpenGL ES2.iOSiPhone

2021-06-24 06:00:51

EleventyJavaScript靜態網站

2013-08-26 13:58:20

點贊
收藏

51CTO技術棧公眾號

三级黄视频在线观看| 久久人人97超碰com| 91久久精品国产91久久性色tv| 亚洲精品动态| 91久久精品视频| 国产精品美女久久久| 日韩精品av一区二区三区| 狠狠色狠狠色综合日日91app| 欧美做暖暖视频| 国产精品二区一区二区aⅴ污介绍| 免费高清在线| 日韩美女天天操| 国产精品美女午夜爽爽| 97成人精品区在线播放| 欧美日韩国产免费观看| 亚洲三级一区| 国产午夜亚洲精品午夜鲁丝片| 热国产热中文视频二区| 欧美日本韩国一区二区三区视频| 日本不卡1234视频| 98精品国产高清在线xxxx天堂| 在线精品国产| 国产尤物av一区二区三区| 亚洲欧美日韩国产综合| 在线免费看黄| 久久久精品久久久| 一区二区电影| 欧美精品自拍视频| 黑人巨大精品欧美一区二区三区| 国产乱码在线| 欧美一级黄色网| 先锋影音国产一区| 日本精品一区二区三区四区| 欧美视频不卡中文| 国产精品字幕| 91黄色精品| 成人美女在线视频| 视频福利在线| 久久精品成人欧美大片| 欧美成人精品| 熟妇人妻va精品中文字幕| 欧美日韩一区在线| 中文字幕一区二区三区四区久久 | 亚洲视频一区二区三区| 国产精品一区二区99| 天堂一区二区三区| 一区二区在线观看视频| xxx欧美xxx| 成人自拍视频网站| 国产精品人成在线观看免费| 国产丝袜在线播放| 国产精品黄视频| av在线不卡网| 国产乱妇乱子在线播视频播放网站| 国产成人精品午夜| hitomi一区二区三区精品| 97超碰在线公开在线看免费| 国产精品普通话| 日本一二三四高清不卡| 午夜久久中文| 久久久久久国产精品一区| 一区二区三区成人| 91精品短视频| 成年人网站免费视频| 精品区一区二区| 欧美激情欧美| 97在线观视频免费观看| 日韩中文字幕在线视频| 蜜臀av性久久久久av蜜臀妖精| 欧美日韩在线精品一区二区三区激情综 | 快色在线观看| 久久精品一偷一偷国产| 蜜臀av性久久久久av蜜臀妖精 | 欧美激情一区二区三级高清视频 | 日本vs亚洲vs韩国一区三区二区| 中文字幕国产在线 | 未来日记在线观看| 人人澡人人澡人人看欧美| 99视频有精品| 全亚洲第一av番号网站| 免费99视频| 欧美日韩一区二区三区在线看| 97精品在线| 操碰在线免费| 人九九综合九九宗合| 国产精品乱码一区二区三区软件| 高清在线一区二区| 黄色成人在线看| 综合久久五月天| 成人一级片网址| 日本黄色一区| 日本在线xxx| 久久精品视频播放| 成人精品一区二区三区中文字幕| 国产夫妻在线播放| 亚洲午夜精品久久久久久浪潮| 欧美精品乱人伦久久久久久| 欧美日韩国产高清| 青青草观看免费视频在线| 亚洲伊人成综合成人网| 色婷婷亚洲综合| 在线 亚洲欧美在线综合一区| 韩日视频在线| 久久国产精品亚洲va麻豆| 在线成人av影院| 亚洲视频大全| 天天色天天射天天综合网| 亚洲免费不卡| 亚洲另类xxxx| 久久久一区二区| 久久午夜影院| h精品动漫在线观看| 国产欧美日韩丝袜精品一区| 欧美日韩激情视频8区| 欧美日韩午夜| 日本欧美电影在线观看| 国产a级黄色大片| 伦理中文字幕亚洲| 亚洲视频免费看| 四虎成人av| 2017亚洲天堂1024| 一级特黄录像免费播放全99| 日韩精品免费在线视频| 成人av电影在线网| 日本亚洲不卡| 免费在线观看污视频| 日韩国产伦理| 色琪琪综合男人的天堂aⅴ视频| 久久精品免视看| 91精品推荐| 成年女人在线看片| mm131国产精品| 亚洲综合视频1区| 精品国产免费久久 | 激情丁香在线| 粉嫩高清一区二区三区精品视频| 日韩欧美你懂的| 不卡电影一区二区三区| 亚洲精品aaaaa| 日本免费中文字幕在线| www.99riav| 欧美最近摘花xxxx摘花| 欧美一区二区三区在线视频| 不卡视频免费播放| 97久久夜色精品国产| 97天天综合网| xxx亚洲日本| 欧美日韩成人一区二区三区| xxx欧美精品| 91成人在线观看喷潮| 粉嫩aⅴ一区二区三区四区五区| 亚洲免费福利一区| 久草在线资源站资源站| mm131亚洲精品| 国内视频一区| 九色成人免费视频| 6080日韩午夜伦伦午夜伦| 91视频在线看| 国产精品激情电影| 久久av网站| 黄网址在线观看| 中文字幕在线观看第三页| 国产一区二区不卡视频| 久久久久久国产精品| 日韩视频在线一区二区| 亚洲欧美另类小说| 国内精品久久久久影院薰衣草 | 91精品久久久久久久99蜜桃| 97精品电影院| 亚洲激情偷拍| 99香蕉久久| av在线播放国产| free亚洲| 国产日韩欧美大片| 国产精品亚洲一区| 青青久久aⅴ北条麻妃| 亚洲人成自拍网站| 欧美性大战xxxxx久久久| 国产精品网曝门| 国模少妇一区二区三区| 欧美一区高清| 人妖一区二区三区| ww久久综合久中文字幕| 性开放的欧美大片| av电影免费| 人人妻人人澡人人爽欧美一区双| 国产精成人品localhost| 国内精品视频久久| 亚洲欧洲xxxx| 91精品在线麻豆| 精品高清美女精品国产区| 亚洲国产精品激情在线观看| 国产一区不卡视频| 男女精品网站| 欧美日本不卡高清| 国产一区2区| 欧美日韩看看2015永久免费| 成人午夜毛片| 综合日韩av| 91九色国产在线播放|