中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android中怎么搭建一個一個OpenGL ES開發環境

發布時間:2021-06-28 15:48:11 來源:億速云 閱讀:166 作者:Leah 欄目:移動開發

這篇文章將為大家詳細講解有關Android中怎么搭建一個一個OpenGL ES開發環境,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

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

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

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

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

<supports-gl-texture android:name="GL_OES_compressed_ETC1_RGB8_texture" /> <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作為主視圖的***實現:

public class OpenGLES20 extends Activity { private GLSurfaceView mGLView; @Override public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     // Create a GLSurfaceView instance and set it     // as the ContentView for this Activity.     mGLView = new MyGLSurfaceView(this);     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中創建一個內部類:

class MyGLSurfaceView extends GLSurfaceView { public MyGLSurfaceView(Context context){     super(context);     // Set the Renderer for drawing on the GLSurfaceView     setRenderer(new MyRenderer()); } }

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

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

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

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

// Render the view only when there is a change in the drawing data 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上繪制了一個灰色的背景:

public class MyGL20Renderer implements GLSurfaceView.Renderer { public void onSurfaceCreated(GL10 unused, EGLConfig config) {         // Set the background frame color         GLES20.glClearColor(0.5f, 0.5f, 0.5f, 1.0f);     }     public void onDrawFrame(GL10 unused) {         // Redraw background color         GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);     }     public void onSurfaceChanged(GL10 unused, int width, int height) {         GLES20.glViewport(0, 0, width, height);     }     }

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

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

關于Android中怎么搭建一個一個OpenGL ES開發環境就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泾源县| 灵璧县| 宝应县| 玉龙| 芦山县| 成安县| 勃利县| 抚远县| 平遥县| 华池县| 卢氏县| 明光市| 安泽县| 富民县| 福安市| 甘孜县| 吴桥县| 衡南县| 台东县| 鄱阳县| 金堂县| 唐海县| 长汀县| 政和县| 昌乐县| 屏东县| 玛纳斯县| 西乌珠穆沁旗| 万山特区| 涿鹿县| 怀安县| 竹北市| 灵山县| 长葛市| 朝阳市| 永寿县| 鄯善县| 孝感市| 浑源县| 新化县| 湾仔区|