Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将位图绘制为SurfaceView背景_Java_Android_Bitmap_Surfaceview - Fatal编程技术网

Java 将位图绘制为SurfaceView背景

Java 将位图绘制为SurfaceView背景,java,android,bitmap,surfaceview,Java,Android,Bitmap,Surfaceview,我目前正在使用Canvas.drawBitmap()将位图绘制到SurfaceView。这似乎真的降低了我的帧率,我想知道我能做些什么来解决这个问题。我引用了在onDraw()方法之外创建的位图。我已经确保图像小,不透明,像素格式匹配。。。等等,当我不画图像时,帧速率会上升10-15 FPS。有没有加快速度的办法?我感到明显的滞后 我在一切之外创建位图 private Bitmap bitmapPlayer = BitmapFactory.decodeResource(getResources(

我目前正在使用
Canvas.drawBitmap()
位图绘制到
SurfaceView
。这似乎真的降低了我的帧率,我想知道我能做些什么来解决这个问题。我引用了在
onDraw()方法之外创建的位图。我已经确保图像小,不透明,像素格式匹配。。。等等,当我不画图像时,帧速率会上升10-15 FPS。有没有加快速度的办法?我感到明显的滞后

我在一切之外创建位图

private Bitmap bitmapPlayer = BitmapFactory.decodeResource(getResources(), R.drawable.player);
然后在我的onDraw()方法中

canvas.drawBitmap(bitmapPlayer, null, drawingRect, null); // drawingRect is the Rect to draw the Bitmap inside of
// ... Rest of drawing code

我只能假设你在draw调用中做了一些逻辑性很强的事情,如果你看不到你的代码和下面的例子之间有任何区别

我将开始研究以下内容,并利用图形硬件进行绘图


希望这对您有所帮助

我只能假设您在draw调用中做了一些逻辑性很强的事情,如果您没有看到代码与下面的示例之间的任何差异

我将开始研究以下内容,并利用图形硬件进行绘图


希望这有助于您在背景中使用的位图有多大。如果它的大小过大,只有一个大小,并且没有为hdpi、mdpi等创建,那么您可能引用了不必要的大图像。如果是这种情况,我将使用BitmapFactory类创建与画布的宽度和高度匹配的图像的缩小版本


建议使用png图像,因为它们是最有效的。

用于背景的位图有多大。如果它的大小过大,只有一个大小,并且没有为hdpi、mdpi等创建,那么您可能引用了不必要的大图像。如果是这种情况,我将使用BitmapFactory类创建与画布的宽度和高度匹配的图像的缩小版本


建议使用png图像,因为它们效率最高。

您好,您能发布您的代码吗?如果你传入一个对对象的引用,你不应该看到一个巨大的下降。@garyamorris我用一些代码更新了我的帖子。游戏仍然可以玩,但我注意到,当我不绘制
位图时,游戏运行更流畅。您好,您能发布您的代码吗?如果你传入一个对对象的引用,你不应该看到一个巨大的下降。@garyamorris我用一些代码更新了我的帖子。游戏仍然可以玩,但我注意到,当我不绘制
位图时,游戏运行更流畅。感谢链接,一切看起来都正常。我确实做了很多计算,但是游戏在没有调用
canvas.drawBitmap()
的情况下以~50fps的速度运行得非常顺利。当我添加它时,它会将它降低到约40fps,我注意到每隔几秒钟就会有一个延迟,然后它会继续平滑渲染几秒钟。。。没有drawBitmap()调用,一切都能平稳运行。也许OpenGL是我唯一的选择。值得一试,我对它有点熟悉,但我试图在这场比赛中避免它。太棒了,我倾向于沉迷于fps,尽管我试图打破这个习惯。很好,卢卡哈,我很清楚这种感觉。谢谢你的帮助!谢谢你的链接,一切看起来都很好。我确实做了很多计算,但是游戏在没有调用
canvas.drawBitmap()
的情况下以~50fps的速度运行得非常顺利。当我添加它时,它会将它降低到约40fps,我注意到每隔几秒钟就会有一个延迟,然后它会继续平滑渲染几秒钟。。。没有drawBitmap()调用,一切都能平稳运行。也许OpenGL是我唯一的选择。值得一试,我对它有点熟悉,但我试图在这场比赛中避免它。太棒了,我倾向于沉迷于fps,尽管我试图打破这个习惯。很好,卢卡哈,我很清楚这种感觉。谢谢你的帮助!谢谢你的想法,我有不同屏幕大小的单独图像,它们都是png的。。。我会尝试调整它们的尺寸,使之完美贴合,也许这会有所帮助。它可能会减少在
Canvas.drawBitmap()方法中自动进行的缩放。感谢您的想法,我有不同屏幕大小的单独图像,它们都是png的。。。我会尝试调整它们的尺寸,使之完美贴合,也许这会有所帮助。它还可以减少在
Canvas.drawBitmap()方法中自动进行的缩放。