用opengl做了一个动画效果,想知道怎么让它进行快一点

shenyu123 2011-11-09 10:16:13
比如说一个转动,通常的方法是每一帧让它旋转的角度增加,但是这样的话整个动画效果看上去就不流畅了,我想知道有木有其他的办法,同样可以让动画进行的速度加快,并且看上去也很流畅,比如说每秒播放更多帧。初学者,求指教
...全文
495 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kuangc2008 2011-11-09
  • 打赏
  • 举报
回复
把角度设置大点不就行了么?
b87936260 2011-11-09
  • 打赏
  • 举报
回复
设置Angle就可以了把
szwx855 2011-11-09
  • 打赏
  • 举报
回复
用Bitmap的createMap进行创建图片,包含,x,y,height,width,保存在数组中,
然后利用当前系统时间-程序ondraw后的时间,如果大于你设置的动画时间,就继续下一张图.

package com.linjian;

import java.io.InputStream;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;

public class Animation {

/** 上一帧播放时间 **/
private long mLastPlayTime = 0;
/** 播放当前帧的ID **/
private int mPlayID = 0;
/** 动画frame数量 **/
private int mFrameCount = 0;
/** 用于储存动画资源图片 **/
private Bitmap[] mframeBitmap = null;
/** 是否循环播放 **/
private boolean mIsLoop = false;
/** 播放结束 **/
private boolean mIsend = false;
/** 动画播放间隙时间 **/
private int ANIM_TIME = 100;


public Animation(){


}
/**
* 构造函数
*
* @param context
* @param frameBitmapID
* @param isloop
*/
public Animation(Context context, int[] frameBitmapID, boolean isloop) {
mFrameCount = frameBitmapID.length;
mframeBitmap = new Bitmap[mFrameCount];
for (int i = 0; i < mFrameCount; i++) {
mframeBitmap[i] = ReadBitMap(context, frameBitmapID[i]);
}
mIsLoop = isloop;
}

/**
* 构造函数
*
* @param context
* @param frameBitmap
* @param isloop
*/
public Animation(Context context, Bitmap[] frameBitmap, boolean isloop) {
mFrameCount = frameBitmap.length;
mframeBitmap = frameBitmap;
mIsLoop = isloop;
}

/**
* 绘制动画中的其中一帧
*
* @param Canvas
* @param paint
* @param x
* @param y
* @param frameID
*/
public void DrawFrame(Canvas Canvas, Paint paint, int x, int y, int frameID) {
Canvas.drawBitmap(mframeBitmap[frameID], x, y, paint);
}

/**
* 绘制动画
*
* @param Canvas
* @param paint
* @param x
* @param y
*/
public void DrawAnimation(Canvas Canvas, Paint paint, int x, int y) {
// 如果没有播放结束则继续播放
if (!mIsend) {
Canvas.drawBitmap(mframeBitmap[mPlayID], x, y, paint);
long time = System.currentTimeMillis();
if (time - mLastPlayTime > ANIM_TIME) {
mPlayID++;
mLastPlayTime = time;
if (mPlayID >= mFrameCount) {
// 标志动画播放结束
mIsend = true;
if (mIsLoop) {
// 设置循环播放
mIsend = false;
mPlayID = 0;
}
}
}
}
}

public long getmLastPlayTime() {
return mLastPlayTime;
}
public void setmLastPlayTime(long mLastPlayTime) {
this.mLastPlayTime = mLastPlayTime;
}
public int getmPlayID() {
return mPlayID;
}
public void setmPlayID(int mPlayID) {
this.mPlayID = mPlayID;
}
public int getmFrameCount() {
return mFrameCount;
}
public void setmFrameCount(int mFrameCount) {
this.mFrameCount = mFrameCount;
}
public Bitmap[] getMframeBitmap() {
return mframeBitmap;
}
public void setMframeBitmap(Bitmap[] mframeBitmap) {
this.mframeBitmap = mframeBitmap;
}
public boolean ismIsLoop() {
return mIsLoop;
}
public void setmIsLoop(boolean mIsLoop) {
this.mIsLoop = mIsLoop;
}
public boolean ismIsend() {
return mIsend;
}
public void setmIsend(boolean mIsend) {
this.mIsend = mIsend;
}
public int getANIM_TIME() {
return ANIM_TIME;
}

public void setANIM_TIME(int ANIM_TIME) {
this.ANIM_TIME = ANIM_TIME;
}


/**
* 切割图片资源.
* @param bitSource
* @param cols
* @param rows
* @return
*/
public Bitmap[] clipBitmapResource(Bitmap bitSource,int cols,int rows){


Bitmap[] bitmap = new Bitmap[cols*rows];
int width = bitSource.getWidth() / cols;
int height = bitSource.getHeight() / rows;
int x = 0, y = 0;
for (int i = 0; i < cols * rows; i++) {
bitmap[i] = Bitmap.createBitmap(bitSource, x, y, width, height);

if ((i + 1) % cols == 0 && i != 0) {

y += height;
x = 0;

} else {

x += width;
}
}

return bitmap;

}

/**
* 读取图片资源
*
* @param context
* @param resId
* @return
*/
public Bitmap ReadBitMap(Context context, int resId) {
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inPreferredConfig = Bitmap.Config.RGB_565;
opt.inPurgeable = true;
opt.inInputShareable = true;
// 获取资源图片
InputStream is = context.getResources().openRawResource(resId);
return BitmapFactory.decodeStream(is, null, opt);
}
}



A一剑飞鸿 2011-11-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 szwx855 的回复:]

用Bitmap的createMap进行创建图片,包含,x,y,height,width,保存在数组中,
然后利用当前系统时间-程序ondraw后的时间,如果大于你设置的动画时间,就继续下一张图.
Java code

package com.linjian;

import java.io.InputStream;

import android.content.Context;
impo……
[/Quote]
尝试这个.!
「已注销」 2011-11-09
  • 打赏
  • 举报
回复
1. setRenderMode(RENDERMODE_WHEN_DIRTY);
2. 需要刷新时,调用requestRender()函数即可。

系统调用onDrawFrame的时间怎么控制:
http://www.eoeandroid.com/thread-93767-1-1.html
shenyu123 2011-11-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kuangc2008 的回复:]

把角度设置大点不就行了么?
[/Quote]

是啊,可以是可以,但是角度变化调大了,显得不流畅了啊
一、第一个OPENGL程序...................................................................................................................4 1.1、OPENGL的优点..........................................................................................................................4 1.2、OPENGL的安装..........................................................................................................................4 1.3、第一个OPENGL程序.................................................................................................................5 二、点、直线和多边形..........................................................................................................................8 2.1、点、直线和多边形.....................................................................................................................8 2.2、在OPENGL中指定顶点.............................................................................................................8 2.3、绘制曲线....................................................................................................................................9 三、绘制几何图形的细节....................................................................................................................14 3.1、关于点......................................................................................................................................14 3.2、关于直线..................................................................................................................................14 3.3、关于多边形...............................................................................................................................15 四、颜色的选择...................................................................................................................................20 4.1、RGBA颜色...............................................................................................................................20 4.2、索引颜色..................................................................................................................................21 4.3、指定清除屏幕用的颜色...........................................................................................................22 4.4、指定着色模型...........................................................................................................................23 五、 三维变换.....................................................................................................................................25 5.1、模型变换和视图变换...............................................................................................................25 5.2、投影变换..................................................................................................................................26 5.3、视口变换..................................................................................................................................28 5.4、操作矩阵堆栈...........................................................................................................................29 5.5、综合举例..................................................................................................................................29 六、 动画制作.....................................................................................................................................33 6.1、双缓冲技术...............................................................................................................................33 6.2、实现连续动画...........................................................................................................................34 6.3、垂直同步..................................................................................................................................35 6.4、计算帧速..................................................................................................................................36 七、光照...............................................................................................................................................40 7.1、建立光照模型...........................................................................................................................40 7.2、法线向量..................................................................................................................................41 7.3、控制光源..................................................................................................................................41 7.4、控制材质..................................................................................................................................43 7.5、选择光照模型...........................................................................................................................43 7.6、示例程序..................................................................................................................................44 八、 显示列表.....................................................................................................................................48 8.1、分配显示列表编号...................................................................................................................48 8.2、创建显示列表...........................................................................................................................49 8.3、调用显示列表...........................................................................................................................49 8.4、销毁显示列表...........................................................................................................................50 九、 混合.............................................................................................................................................56 9.1、源因子和目标因子...................................................................................................................56 9.2、二维图形混合举例...................................................................................................................57 9.3、实现三维混合...........................................................................................................................58 十、像素操作.......................................................................................................................................63 10.1、BMP文件格式简单介绍........................................................................................................63 10.2、简单的OPENGL像素操作.....................................................................................................64 10.3、GLREADPIXELS的用法和举例................................................................................................64 10.4、GLDRAWPIXELS的用法和举例..............................................................................................68 10.5、GLCOPYPIXELS的用法和举例................................................................................................70 十一、 纹理.........................................................................................................................................73 11.1、启用纹理和载入纹理.............................................................................................................74 11.2、纹理坐标................................................................................................................................75 11.3、纹理参数................................................................................................................................76 11.4、纹理对象................................................................................................................................77 11.5、示例程序................................................................................................................................79 十二、 测试操作.................................................................................................................................87 12.1、剪裁测试................................................................................................................................87 12.2、ALPHA测试.............................................................................................................................88 12.3、模板测试................................................................................................................................92 12.4、深度测试................................................................................................................................97 十三、 OPENGL的状态....................................................................................................................99 13.1、取得OPENGL的当前状态...................................................................................................100 13.2、设置OPENGL状态...............................................................................................................101 13.3、OPENGL工作流程................................................................................................................101 十四、 OPENGL的版本和OPENGL的扩展...............................................................................104 14.1、OPENGL的版本....................................................................................................................104 14.2、OPENGL的扩展....................................................................................................................106 14.3、工具软件...............................................................................................................................110 十五、OPENGL的演进....................................................................................................................112 15.1、从原始一点的办法开始.......................................................................................................112 15.2、顶点数组...............................................................................................................................115 15.3、顶点缓冲区对象...................................................................................................................118 十六、显示文字.................................................................................................................................122 16.1、OPENGL版的“HELLO, WORLD!”.........................................................................................122 16.2、指定字体...............................................................................................................................124 16.3、显示中文...............................................................................................................................126 16.4、纹理字体...............................................................................................................................128 16.5、应用纹理字体的实例:飘动的旗帜...................................................................................132 16.6、缓冲机制...............................................................................................................................137 16.7、轮廓字体...............................................................................................................................141

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧