Pygame软件闪电战与PyOpenGL硬件绘图



我的问题实际上不是一个问题,而是一个事实问题,它是:

在我的应用程序中,我使用PyGame绘制精灵。所以基本上我在做以下事情:

surface.blit(image, [other_args])

现在,如果精灵不是太大,这是相当快的。但现在,我想尝试使用OpenGL(使用PyOpenGL库(,但我不知道这是否值得,这需要一些时间和应用程序的重构。

因此:

  • 我不能批量或组合精灵(我不能把所有东西都放在一个顶点数组中,只发出draw命令(,也不能实例化,因为精灵差异很大
  • 精灵数量真的很多

。。值得使用PyOpenGL吗?还是应该坚持使用PyGame唯一的默认闪电战算法?

在一年前的一个项目中,我从pygame Sprites转到了pyOpenGl。在我了解了VertexArrayBuffer是如何工作的(你应该熟悉它!(之后,我没有做太多工作,不仅要翻译我的代码,还要升级我的渲染系统。仍然需要重做pyglet给我的所有东西,例如显示文本需要一段时间。。。

如果你想创建一个高效的应用程序,你应该记住,使用openGL的python并不是很快,或者,在python中渲染openGL似乎需要更多的CPU。由于我在Java或C++中没有相同的项目,我无法测量差异,但用文本渲染一个大的三维世界和HUD会导致一些滞后,即使没有AI、粒子、阴影等等。。。

一般来说,用python对你的项目进行原型设计,然后抽象出你想要实现的架构的需求,并将其翻译成更合适的语言应该比项目中期从头开始重建更快(开发(。

TL;DR:如果你真的想坚持使用python:尝试一下,看看你的代码给你的机器带来了多大的压力,把你的代码转移到pyOpenGl应该不会是的问题

最新更新