Opengl第一个练手小程序

本文档介绍了使用OpenGL开发3D案例Demo的步骤。首先,详细讲述了在`My3D_Activity`中如何处理生命周期,特别是`onResume`和`onPause`方法。接着,讨论了`MyGLSurfaceView`的创建,包括内部类`SceneRenderer`实现`GLSurfaceView.Renderer`接口。最后,提到了`MatrixState`类在程序中的应用。
摘要由CSDN通过智能技术生成

开发Opengl 3D案例Demo第一步

首先我们需要开发一个主控制类My3D_Activity继承自Activity(当程序开始时执行),接着将用来显示3D场景的类GLSurfaceView与类My3D_Activity进行绑定,使得OpenGL ES 工作在 Activity 生命周期中,这里博主采取自定义类MyGLSurfaceView继承GLSurfaceView的方式。

1.开发主控制类My3D_Activity

private MyGLSurfaceView myGLSurfaceView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //初始化GLSurfaceView
        myGLSurfaceView = new MyGLSurfaceView(this);
        //将My3D_Activity的显示界面设置为MyGLSurfaceView
        setContentView(myGLSurfaceView);
        //获取焦点
        myGLSurfaceView.requestFocus();
        //设置为可触控
        myGLSurfaceView.setFocusableInTouchMode(true);
    }

    @Override
    protected void onResume() {
        super.onResume();
        //将GLSurfaceView的onResume()方法与Activity的onResume()方法进行绑定
        myGLSurfaceView.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        //将GLSurfaceView的onPause()方法与Activity的onPause()方法进行绑定
        myGLSurfaceView.onPause();
    }
  • 其中,onResume与onPause是Activity生命周期运行中的方法,当Activity可以得到用户焦点的时候就会调用onResume方法,当Activity被遮挡住的时候就会调用onPause方法,onPause和onResume中的动作应该互逆,比如说onPause中释放了相机,那么onResume中就要重新初始化相机。
  • GLSurfaceView中的onResume与onPause方法封装对应的执行内容,将其与Activity对应的方法绑定即可。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

小知识:

关于Activity的生命周期方法

onCreate:当第一次调用一个Activity就会执行onCreate方法

onStart:当Activity处于可见状态的时候就会调用onStart方法。 该方法在 onCreate() 方法之后被调用(一个新 Activity 启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态),或者在 Activity 从 Stop 状态转换为 Active 状态时被调用,一般执行了onStart()后就执行onResume()。

onResume:当Activity可以得到用户焦点的时候就会调用onResume方法

onRestart:当Activity没有被销毁的时候重新调用这个Activity就会调用onRestart方法(一般执行onRestart后就执行onStart

onPause:当 Activity 被另一个透明或者 Dialog 样式的 Activity 覆盖时的就会调用onPause方法。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它仍然可见,但它已经失去了焦点故不可与用户交互。

onStop:当 Activity 被另外一个 Activity 覆盖、失去焦点并并处于不可见(Stop状态时调用onStop方法,

onDestory:当Activity被销毁时会调用onDestory方法

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



2.开发3D场景视图类MyGLSurfaceView

 //角度缩放比例(用于手指移动位移大小与旋转角度大小比例的计算)
    private fina
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值