当前位置: 代码迷 >> Android >> Android Opengl开发1
  详细解决方案

Android Opengl开发1

热度:86   发布时间:2016-05-01 15:48:50.0
Android Opengl开发一

opengl的基本上都会搜到nehe写的教程,很多地方都是这个教程的改写。我从两个星期前开始自学opengl,到目前总算略懂一二。因为最终想要用在android上面,所以我打算把nehe的教程移植到android平台上面讲解。同时也想与那些和我一起想在android上做游戏的朋友分享。本文章是菜鸟级别的,如果有误请指正。

?

?

本篇对应nehe的第一篇:OPENGL窗口

?

?

本文假设大家会建立android应用程序了,也会大概使用activity,所以这些就不介绍了。android下面和opengl窗口相关的涉及到一个类GLSurfaceView,此类作用就是用来显示Opengl渲染。以下语句创建一个GLSurfaceView实例。

private GLSurfaceView  mView;mView = new GLSurfaceView(this);
?

?

以下设置真正的用来渲染的对象,这个对象负责真正的opengl工作。MyRender这个类稍后介绍。

mView.setRenderer(new MyRender());
?

?

接着设置渲染模式,有两种选择,一个是根据需要来渲染(RENDERMODE_WHEN_DIRTY),另一个是不停地渲染。默认是RENDERMODE_CONTINUOUSLY

mView.setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY);
?

?

接着setContentView

setContentView(mView);
?

?

Activity生命周期

activity暂停或者恢复时必须要通知GLSurfaceViewGLSurfaceView需要相应地调用onPause() onResume()方法。这些方法允许GLSurfaceView暂停或恢复渲染线程,也能够让GLSurfaceView释放和重建OpenGL显示。以下是相关代码

@Overrideprotected void onPause() {     super.onPause();     mView.onPause();}   @Overrideprotected void onResume() {    super.onResume();    mView.onResume();}
?

?

下面创建MyRender类

?

public class MyRender implements Renderer {          public MyRender(){       }        /**        * 显示当前帧的时候调用此方法        */       @Override       public void onDrawFrame(GL10 gl) {                    }        /**        * 当窗口大小发生改变时调用此方法        * 此方法在窗口第一次建立的时候也会被调用        */       @Override       public void onSurfaceChanged(GL10 gl, int width, int height) {             }        /**        * 当窗口创建或者重建的时候调用此方法        */       @Override       public void onSurfaceCreated(GL10 gl, EGLConfig config) {                    }}
?

?

如何全屏?

ActivityonCreate()方法适当位置加入以下代码

?

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); getWindow().requestFeature(Window.FEATURE_NO_TITLE);
?

?

其中getWindow()获取当前Activity的窗口,取得窗口后设置全屏的标识。接着用FEATURE_NO_TITLE关掉屏幕顶端的标题。

?

接下来,大家就可以在模拟器中运行了,当然本程序中除了黑乎乎的平面,啥也没有。我知道本文等于啥都没说,下一篇会正式开始讲解Opengl

?

参考文档:android-sdk-windows/docs/reference/android/opengl/GLSurfaceView.html

1 楼 Soul4 2011-01-15  
网上很多都是拷贝书上的例子或者转一些资源,真实的个人想法其实很少,希望楼主可以把真正的心得和体会拿出来分享,谢谢。
2 楼 habzyhs 2011-01-27  
就需要这样的心得,其他看了还是要自己总结半天阿~~

等待楼主下篇~~~
3 楼 smilecatflowers 2011-08-12  
这样的心得,虽然简单确是一目了然。。
  相关解决方案