使用SurfaceView制作2D游戏我不知道有效地将背景图像放入其中。 我想避免每帧画一次,因为它是静态图像,有什么帮助吗?
答案 0 :(得分:0)
SurfaceView的Surface是单层。当你锁定画布时,你可以指定一个脏的矩形来减少你的绘图区域,但你必须在每个帧中绘制所有内容 - 背景和所有。
你可以使用一对SurfaceViews,一个是默认的Z-ordering,一个是" media"深度。使用SurfaceView.setZOrderMediaOverlay()来执行此操作。在渲染之前,这些图层将由系统合成。
如果您使用的是OpenGL ES而不是Canvas,那么每次从纹理重绘背景通常会更有效。 (如果HWC用完了叠加层,那么这基本上就是SurfaceFlinger正在做的事情。)
参见"多表面测试"在Grafika中有关使用多个重叠曲面的示例。