作者:张秀龙

Android提供了两个基本的类让我们使用OpenGL ES API来创建和操纵图形:GLSurfaceView和 GLSurfaceView.Renderer。因此我们首先需要了解这两个类。

1. GLSurfaceView:

这是一个视图类,你可以调用OpenGL API在上面绘制图形和操纵物体,功能和SurfaceView相似。我们可以创建一个GLSurfaceView类的实例,并添加自己的渲染器。如果我们要自己实现一些触摸屏的操作,我们必须扩展这个类来实现触摸监听器。

2. GLSurfaceView.Renderer

这个接口定义了在一个OpenGL的GLSurfaceView中绘制图形所需要的方法。我们必须在一个单独的类中为这些接口提供实现,并使用GLSurfaceView.setRenderer()方法将它依附到GLSurfaceView实例对象上。

我们需要实现GLSurfaceView.Renderer的以下方法:

a) onSurfaceCreated():系统在创建GLSurfaceView时调用它一次。我们可以使用它来设置OpenGL的环境变量,或是初始化OpenGL的图形物体。

b) onDrawFrame():系统在每次重绘GLSurfaceView时调用这个方法。这个方法主要完成绘制图形的操作。

c) onSurfaceChanged():系统在GLSurfaceView的几何属性发生改变时调用该方法,包括大小或是设备屏幕的方向发生变化。例如,系统在屏幕从直立变为水平使调用它。这个方法主要用来对GLSurfaceView容器的变化进行响应。

实验步骤

1. 添加新项目

2. 添加新类myGLRenderer,实现GLSurfaceView.Renderer接口

代码如下:

public class myGLRenderer implements Renderer {@Overridepublic void onDrawFrame(GL10 gl) {// TODO Auto-generated method stub        gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);//清空缓存}@Overridepublic void onSurfaceChanged(GL10 gl, int width, int height) {// TODO Auto-generated method stub        gl.glViewport(0, 0, width, height);//设置视口}@Overridepublic void onSurfaceCreated(GL10 gl, EGLConfig config) {// TODO Auto-generated method stub        gl.glClearColor(0.5f, 0.5f, 0.5f, 1.0f); //设置清除色}}


3. 添加新的类myGLSurfaceView,父类为GLSurfaceView

代码如下:


public class myGLSurfaceView extends GLSurfaceView {public myGLSurfaceView(Context context) {super(context);// TODO Auto-generated constructor stubmrender = new myGLRenderer();setRenderer(mrender);}private myGLRenderer mrender;}


4. 主程序代码如下:


public class HelloOpenGLActivity extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        mGLSurfaceView = new myGLSurfaceView(this);        setContentView(mGLSurfaceView);//这里我们用mGLSurfaceView来替换以前常用的R.layout.main    }       private myGLSurfaceView mGLSurfaceView;}


这样,我们便完成了使用OpenGL绘制灰色背景的应用。当然这是最基本的功能了。后续我们会一起来探索如何使用OpenGL绘制简单的几何图形。


更多相关文章

  1. 葵花宝典之普及篇 —— HD2 android 各种直刷方法
  2. android中实现view的更新UI有两组方法的问题
  3. Could not find SDK_Root\tools\adb.exe 的解决方法
  4. Android高手进阶教程(八)-------Android中两种设置全屏的方法!!!
  5. Android Studio导入.so库文件方法

随机推荐

  1. android 全屏实现
  2. 三星android大规模开源啦
  3. android中图片的拖拉和缩放
  4. tiny210的android编译过程
  5. Android 点击赞时弹出+1向上弹出动画
  6. Android ListView的使用
  7. Android 打开闪光灯(手电筒)
  8. [置顶] android 捕捉异常
  9. android save bitmap
  10. android driver for ubuntu 手机驱动