Android中如何搭建OpenGLES开发环境-创新互联

这篇文章主要介绍“Android中如何搭建OpenGL ES开发环境”,在日常操作中,相信很多人在Android中如何搭建OpenGL ES开发环境问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android中如何搭建OpenGL ES开发环境”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

成都创新互联公司成立于2013年,先为柳林等服务建站,柳林等地企业,进行企业商务咨询服务。为柳林企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

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

要在应用程序中使用 OpenGL ES 2.0 API,你必须在Manifest添加以下的声明:

如果你的应用程序中使用到了纹理压缩,你必须声明应用程序所支持的压缩格式,以便提醒不支持这些格式的设备不会尝试运行你的应用程序:

 

想获取更多关于纹理压缩格式的信息,请参考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开发环境”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


本文名称:Android中如何搭建OpenGLES开发环境-创新互联
转载来于:http://bzwzjz.com/article/cdjcgd.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站建设 高端网站设计 营销型网站建设 成都网站建设公司 响应式网站设计 网站设计 网站设计制作报价 网站制作 手机网站制作 梓潼网站设计 成都网站建设 移动网站建设 网站制作 响应式网站设计 定制网站设计 网站建设推广 成都网站建设 成都响应式网站建设 LED网站设计方案 网站建设公司 商城网站建设 成都网站制作