PyOpengl和PyQt的性能

时间:2012-02-15 08:36:06

标签: python pyqt pyopengl wavefront

我编写了一个Wavefront OBJ加载程序并且它可以工作,但是在500个多边形,1000个多边形等于~10秒延迟,以及2000个多边形等于冻结和崩溃后,FPS降至~3。

我的C ++ / Qt应用程序加载了大约15-20 FPS的100万个多边形,我对PyOpengl(ctypes)和PyQt(sip)包装器持怀疑态度。

有没有人试图将高分辨率模型加载到PyOpengl和PyQt应用程序来帮助我?

编辑:我为OBJ加载器使用了“顶点缓冲区对象”,因此与CPU无关。

1 个答案:

答案 0 :(得分:4)

来自http://pyopengl.sourceforge.net/ctypes/using.html

的Python + OpenGL性能提示
  

Python(目前)是一种相当慢的语言,因为它的执行模型具有令人难以置信的通用性。这意味着在Python中编译OpenGL的某些方法在C或C ++等语言中运行良好。要记住的关键想法是,您希望尽可能地将迭代和重复的工作推进到OpenGL实现(在C和/或硬件中实现)。

     

实现这一目标有两种主要方法:

     
      
  • 使用基于数组的几何
  •   
  • 使用display-lists
  •   

解决:

我通过使用Ctypes来解决性能问题,只需在我的C ++应用程序(现在主要是C)周围编写一个小包装器,并使用PyQt进行GUI和GL小部件。 - 我为大约100万个多边形获得10 FPS,性能优势并且极力推荐!!