我编写了一个Wavefront OBJ加载程序并且它可以工作,但是在500个多边形,1000个多边形等于~10秒延迟,以及2000个多边形等于冻结和崩溃后,FPS降至~3。
我的C ++ / Qt应用程序加载了大约15-20 FPS的100万个多边形,我对PyOpengl(ctypes)和PyQt(sip)包装器持怀疑态度。
有没有人试图将高分辨率模型加载到PyOpengl和PyQt应用程序来帮助我?
编辑:我为OBJ加载器使用了“顶点缓冲区对象”,因此与CPU无关。
答案 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,性能优势并且极力推荐!!