最新版本:Android高级进阶三 Android OpenGL | ES开发框架
在Android3d开发中,纵然Android给我们提供了一个GL10的类来实现3D开发实例,但是开发人员一般会使用更好的GLSurfaceView来更好的显示OpenGL视图,所以我们鉴于此,我们也使用GLSurfaceView来开发OpenGL,而在GLSurfaceView中则包含了一个专门用于3D的接口Render,所以在使用GLSurfaceView之前,我们必须构建一个自己的Render。
在上面Render对象中,我们需要实现下述方法:
- public class GLRender implements Renderer{
- 所有的绘图工作就在此完成
- @Override
- public void onDrawFrame(GL10 gl) {
- // TODO Auto-generated method stub
- }
- 当窗口发生改变时,调用下述方法,但无论窗口是否发生变化,这个应该在程序开始时运行一次
- @Override
- public void onSurfaceChanged(GL10 gl, int width, int height) {
- // TODO Auto-generated method stub
- }
- 当窗口创建的时候,我们可以在onSurfaceCreated中对OpenGL做一些初始化工作
- @Override
- public void onSurfaceCreated(GL10 gl, EGLConfig config) {
- // TODO Auto-generated method stub
- }
- }
所以一个完整的Android OpenGL开发框架就应该如下:
- org.ourunix.android.opengltest;
- import javax.microedition.khronos.egl.EGLConfig;
- import javax.microedition.khronos.opengles.GL10;
- import android.app.Activity;
- import android.opengl.GLSurfaceView;
- import android.opengl.GLSurfaceView.Renderer;
- import android.os.Bundle;
- public class OpenGLTestActivity extends Activity {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- GLSurfaceView glView = new GLSurfaceView(this);
- Renderer render = new GLRender();
- glView.setRenderer(render);
- setContentView(glView);
- }
- public class GLRender implements Renderer{
- @Override
- public void onDrawFrame(GL10 gl) {
- // TODO Auto-generated method stub
- }
- @Override
- public void onSurfaceChanged(GL10 gl, int width, int height) {
- // TODO Auto-generated method stub
- }
- @Override
- public void onSurfaceCreated(GL10 gl, EGLConfig config) {
- // TODO Auto-generated method stub
- }
- }
- }