1

我编写了一个 Wavefront OBJ 加载器,它可以工作,但 FPS 在 500 个多边形后下降到 ~3,1000 个多边形等于 ~10 秒延迟,2000+ 个多边形等于冻结和崩溃。

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

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

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

4

1 回答 1

4

Python + OpenGL 的性能提示,来自http://pyopengl.sourceforge.net/ctypes/using.html

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

有两种主要的方法来实现这一点:

  • 使用基于数组的几何
  • 使用显示列表

解决了:

我通过使用 Ctypes 解决了性能问题,只需围绕我的 C++ 应用程序(现在主要是 C)编写一个小包装器,并将 PyQt 用于 GUI 和 GL 小部件。-- 我得到 10 FPS 约 100 万个多边形,性能摇滚,强烈推荐!!

于 2012-02-15T10:59:20.347 回答