嘿所有我正在处理我一直在努力的应用程序的十字路口.

这是一个游戏和一个“街机/动作”,但是我使用Surfaceview而不是Open GL对它进行编码(当游戏从原始设计中彻底改变时,它就是这样).

我发现自己困扰着性能问题甚至在游戏中,但只是在第一个活动中,这是一个动画菜单(全屏幕背景,大约8个精灵浮在屏幕上).

即使有这么少的精灵,我也无法获得完美平稳的动作.它们平稳地移动了一段时间,然后瞬间变得“波涛汹涌”或“生涩”.

我注意到(据我所知)背景(预先缩放的图像)需要大约7到8毫秒的时间来绘制.这合理吗?我尝试过不同的绘图方式,例如:

canvas.drawBitmap(scaledBackground, 0, 0, null);

上面的代码产生的结果大致相同:

canvas.drawBitmap(scaledBackground, null, screen, null);

但是,如果我将持有人改为:

getHolder().setFormat(PixelFormat.RGBA_8888);

位图的绘制最高可达13 MS(我假设因为它必须转换为RGB_8888格式.

奇怪的是渲染和逻辑以非常稳定的30fps移动,它不会丢弃任何帧,并且在运行时没有发生垃圾收集.

我已经尝试了几乎所有我能想到的东西让我的精灵顺利移动

我最近在我的游戏循环中加入了插值:

float interpolation = (float)(System.nanoTime() + skipTicks - nextGameTick)

/ (float)(skipTicks);

然后我将它传递给我的draw()方法:

onDraw(interpolate)

我已经取得了一些成功,它确实有助于解决问题,但我对结果仍然不满意.

任何人都可以给我任何最后的提示,可能会减少绘制我的位图所花费的时间或任何其他可能导致这种情况的提示,或者你认为这只是Surfaceview无法完成任务的情况因此,我应该废弃该应用程序原样并重新开始使用Open GL?

这是我的主要游戏循环:

int TICKS_PER_SECOND = 30;

int SKIP_TICKS = 1000 / TICKS_PER_SECOND;

int MAX_FRAMESKIP = 10;

long next_game_tick = GetTickCount();

int loops;

bool game_is_running = true;

while( game_is_running ) {

loops = 0;

while( GetTickCount() > next_game_tick && loops < MAX_FRAMESKIP) {

update_game();

next_game_tick += SKIP_TICKS;

loops++;

}

interpolation = float( GetTickCount() + SKIP_TICKS - next_game_tick )

/ float( SKIP_TICKS );

display_game( interpolation );

}

谢谢

android 背景图太大,android – 背景图片需要太长时间才能画(Canvas)Jerky Sprites ……?...相关推荐

  1. android webview 太大,Android应用开发之Android WebView加载图片显示过大的处理教程(代码教程)...

    本文将带你了解Android应用开发Android  WebView加载图片显示过大的处理教程(代码教程),希望本文对大家学Android有所帮助. Webview加载图片时,经常会遇到图片显示不符合 ...

  2. 九宫格拼图android代码,Android 多图上传后将图片进行九宫格展示的实例代码

    不多说上代码 public abstract class NineGridAdapter { protected Context context; protected List list; publi ...

  3. css禁止背景图拉伸_html-css控制背景图全屏拉伸不重复显示

    在HTML中,当我们设置背景图,只能采用是否重叠.居中.重叠方向这几个选项 CSS3中设置 body { background:#3d71b8 url(../back_main.png); backg ...

  4. 背景图宽度自适应及背景图合并的CSS思想

    关于宽度自适应,已经是前段开发人员必备的css技能之一,而背景图的合并则属于更高级别的要求. 我们为什么要宽度自适应,原因大体有以下几点: 第一:很多情况下有这样的需求,比如做B/S前端,90%以上要 ...

  5. 下载必应搜索背景图并设置为背景

    下载必应搜索背景图并设置为背景 网址: http://bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&nc=143926083 ...

  6. 怎么修改html模板里的背景,如何替换背景图模板中的背景

    原标题:如何替换背景图模板中的背景 图文排版 H5秀 小伙伴 小米,你们最近做的"假装一个标题"那个模板里的图咋替换啊,想换成自己的图,怎么点都换不了呢? 其实,这个模板中的图是作 ...

  7. html 随机背景图,vue 实现随机背景图

    本文将介绍在 vue 中实现 刷新切换背景图 的功能.大体可以分为如下三部分: 将背景图处理成方便使用的形式 在要使用的组件中引入背景图 将引入的背景图设置到 html 元素上 整理背景图 首先我们假 ...

  8. ai杀手级_游戏花了太长时间才能利用stadias杀手级功能

    ai杀手级 On July 1, Crayta, a game that allows people to collaborate on making other games, exclusively ...

  9. android edittext光标太大,Android中EditText样式修改 聚焦光标、背景

    在Android开发中,根据项目的需求,需要定制一些特殊的样式,例如:使用EditText时,聚焦时的背景及光标图片使用自定义而非android系统默认的.这两天,在项目中涉及此需求,现记录如下: 首 ...

最新文章

  1. SLAM优化位姿时,误差函数的雅可比矩阵的推导。
  2. Leetcode 173. 二叉搜索树迭代器 解题思路及C++实现
  3. 简述python函数调用过程_python函数定义和调用过程详解
  4. 揭密微信《跳一跳》小游戏那些外挂
  5. Testing on block size in R3AC1
  6. cstring判断包含字符串_Python字符串方法之-解决判断问题
  7. python编程优化_掌握六大技巧,让python编程健步如飞!
  8. 【Linux】kali2019安装docker
  9. Airflow 中文文档:时区
  10. mysql 列很多_MySQL:多个表还是一个表有很多列?
  11. 奇安信代码安全实验室帮助微软修复多个高危漏洞,获官方致谢
  12. table内容超出宽度时隐藏并显示省略标记
  13. python实现判断给定列表是否存在重复元素,且索引差小于k
  14. spring aop和事务同时开启带来的一些问题
  15. ubuntu 测试硬盘读写速度
  16. K8s简述NodePort
  17. Could not initialize class com.android.build.gradle.internal.VariantManager解决方案
  18. 「漫談數位音樂」5~音樂CD複製要點
  19. docker安装、部署docker反向代理
  20. 为什么手机收不到验证码,怎么处理?

热门文章

  1. 我被裁员了!让保安把身患绝症的我被强赶出公司,亲身经历的噩梦!
  2. 命令行的艺术 (GitHub 星标 6 万多)
  3. 抢票神器成GitHub热榜第一,支持候补抢票,Python跑起来
  4. 【每日一算法】二叉搜索树结点最小距离
  5. 基于PyGame的乒乓球和滑雪小游戏
  6. Python设计模式-建造者模式
  7. Python自动化办公系列之Python操作PDF
  8. HUD 5687(字典树)
  9. JavaEE框架整合之基于注解的SSH整合
  10. Linux运维之道之ENGINEER1.1(配置邮件服务器,数据库管理基础,表数据管理)