我正在尝试创建一个弹壳游戏,我遇到了一些麻烦.大约500发子弹后我不能超过17 fps.所有更新逻辑代码大约需要1-4ms,而渲染代码大约需要40ms 现在我的代码是
spatialList是一个arrayList,其中每个索引都是zLevel 显示实际子弹的空间是
我可以提供更多代码,但这些似乎是主要问题.我已经尝试了所有我能想到的东西,并且在网上找不到其他东西.我唯一能想到解决这个问题的方法就是从surfaceview切换到GLSurfaceview,但我真的认为有更好的方法而且我只是使用了错误的代码. 编辑:我注意到我的计时器关闭并取消了drawcircle并且在再次运行之后我得到了40ms~500左右,这对于合理的性能来说仍然有点太低. TLDR; 500个实体= 17 fps. 解决方法: 您可能受到像素填充率的限制.测试设备上的显示器有多大(以像素为单位)? 一个简单的方法是使用 这通常是一个好主意,因为较新的设备似乎正在争夺荒谬的像素数.在软件中执行所有渲染的全屏游戏将在2560×1440显示器上挣扎,并且在4K时非常眩晕.将游戏“限制”为1080p并让显示缩放器完成繁重工作应该会有所帮助.根据游戏的性质,你可以将分辨率设置得更低,没有明显的质量损失. 另一件事是尝试消除drawBitmap()调用,检查你的时间,然后恢复它并消除drawCircle()调用,以查看是否有一个或另一个正在咀嚼大部分时间. 您可能会发现切换到OpenGL ES并不是那么糟糕. Grafika中的“硬件缩放器训练器”活动(来自上面链接的视频)显示了一些简单的位图渲染.用缩放的位图替换drawCircle(),你可能已经完成了大部分工作. (注意它在该活动中使用SurfaceView而不是GLSurfaceView用于GLES.) 来源:http://www./content-4-241751.html |
|