千家信息网

Android中如何搭建OpenGL ES开发环境

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍"Android中如何搭建OpenGL ES开发环境",在日常操作中,相信很多人在Android中如何搭建OpenGL ES开发环境问题上存在疑惑,小编查阅了各式资料,整理出简单好用的
千家信息网最后更新 2026年11月03日Android中如何搭建OpenGL ES开发环境

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

在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开发环境"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

应用 应用程序 程序 代码 环境 开发 方法 图像 更多 视图 学习 格式 变化 控制 有趣 东西 事情 信息 备注 对象 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网品科技 朗涯互联网科技 上海卓越科技 互联网 互联网 科技馆 玖二柒互联网科技公司待遇 彤创互联网科技有限公司 昊天互联网科技有限公司 互联网金融科技展 企晟互联网信息科技有限公司 翼展科技 首家互联网医院 互联网科技如何创业 卓翼科技产业互联网合作 华中科技大学互联网的牛人 银行科技岗属于互联网吗 中天科技中国工业互联网 上海万顺科技互联网有限公司招聘 云南互联网科技学费 兰石爱特工业互联网科技分公司 易租星互联网科技有限公司 唐山双旺合互联网科技产业园 互联网科技保险 金融科技创新监管互联网金融 广州互联网科技公司 九亚互联网科技 一五八零互联网科技 科技赋能互联网健康 米聚互联网科技南京有限公司排面 广西互联网科技孵化中心 元气玛特互联网科技公司是外包吗 杭州披云加互联网科技有限公司
0