OpenGL ES2.0在onDrawFrame用线程画图可以吗?该如何解决
OpenGL ES2.0在onDrawFrame用线程画图可以吗?
RT,我想设定一个线程,每次画完图后调用Thread.sleep(20)来让线程睡眠
接下来继续画,直到完全完成矩阵变换,达到图片动画效果的放大。
但程序一直崩溃,所以将我构想的代码放上来,求大神指引
在没有加线程之前,是可以稳定画图的,不过聚焦放大的图标没有动画效果。
求大神指点
------解决方案--------------------
我觉得线程应该放在onDrawFrame外面,然后通过postInvalidate()来通知系统更新
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()来通知系统更新