首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

OpenGL ES2.0在onDrawFrame用线程画图可以吗?该如何解决

2014-01-05 
OpenGL ES2.0在onDrawFrame用线程画图可以吗?RT,我想设定一个线程,每次画完图后调用Thread.sleep(20)来让

OpenGL ES2.0在onDrawFrame用线程画图可以吗?
RT,我想设定一个线程,每次画完图后调用Thread.sleep(20)来让线程睡眠
接下来继续画,直到完全完成矩阵变换,达到图片动画效果的放大。
但程序一直崩溃,所以将我构想的代码放上来,求大神指引


public void onDrawFrame(GL10 gl){
    GLES20.glClear(GLES20.GL_DEPTH_BUFFER_BIT|GLES20.COLOR_BUFFER_BIT)
    Thread Trans_Thread = new Thread(){
          //zMove用来判定z轴位移量
          float zMove = 0f;
          public void run(){
               boolean flag = true;
               while(flag){
                   画四个图标
                   for(int i=0;i<4;i++){
                       //所有矩阵的定义和操作都放在了MatrixState.java里,纯方法实现
                       //矩阵平移,以便图标一字铺开。
                       MatrixState.translate(i*2f,0,0)
                       //被聚焦的图标会有动画放大的效果
                       if(FocusPosition == i){
                              //进行矩阵缩放,即图标缩放
                             MatrixState.scale(1.3f/50,1.3f/50,1.3f/50);
                       }
                       //Square类的绘制函数
                       Square.drawSelf();   
                   }
                   //判定是否已经缩放完成
                   zMove = zMove + 1.3f/50;
                   //运行标志设为false
                   if(zMove>=1.3f) flag = false;
                   try(Thread.sleep(20);)catch(Exception e){System.out.println(e);}
               }
          }
    }
    Trans_Thread.start();
}


在没有加线程之前,是可以稳定画图的,不过聚焦放大的图标没有动画效果。
求大神指点
[解决办法]
我觉得线程应该放在onDrawFrame外面,然后通过postInvalidate()来通知系统更新

热点排行