首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在pygame中优化瓦片渲染?

如何在pygame中优化瓦片渲染?
EN

Stack Overflow用户
提问于 2012-11-26 03:50:59
回答 1查看 5K关注 0票数 1

我正在制作一个基于瓷砖的游戏,地图需要渲染每一帧。现在,每个瓦片的大小是32X32,可见的地图是28X28瓦片。表演很糟糕。我最近让它只渲染可见的瓷砖,但这仍然没有提高FPS太多。现在我正在寻找一种方法来加速渲染。我将缓慢归因于我渲染的方式;每个磁贴都是单独显示在屏幕上的。这样做更有效的方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2012-11-29 02:00:24

在pygame (afaik)中,更新屏幕总是一个可怕的瓶颈。因为我看不到你的代码,我不知道你是如何更新屏幕的。只删除已更改的精灵是一个开始,但您只需在屏幕上更新已更改的部分。基本上,这是使用display.flip()或使用update_rects()只使用更改过的矩形之间的区别。我知道,当你滚动地图时,那一点帮助都没有。看看这个问题:Why is this small (155 lines-long) Pacman game on Python running so slow?,它有一个类似的主题。

我试过的一件事是,当我有一个地图时,我有一个由瓦片和一些精灵组成的地图,我总是尝试为包含当前显示部分和周围大约200个像素的区域预编译地图图像,这样我就可以对准备好的“地面”(仍然只是更新的部分)进行blit,而不需要blit其中包含的所有那些瓦片。当然,这是你必须投入的一些想法,特别是如果你有多个图层和地图的部分可以在你的活动精灵之上。通过思考和工作是很有趣的,但我不能告诉你,你会从中获得多少。

一种完全不同的可能的解决方案:我从pygame开始(因为在那之前我在C++中做过SDL )。最近,我被引导到另一个python游戏库:pyglet。这不会像pygame那样受到整个屏幕更新问题的困扰(我认为这是因为使用了OpenGL加速;它仍然适用于我根本没有加速的eee-Netbook)。如果您没有以任何方式绑定到pygame,那么看一下pyglet可能会很有趣。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13554817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档