我有一些使用 pyglet 库创建批处理的代码。满载时,整个东西包含大约 10 000 个四边形。现在,当我运行渲染整个场景(它是一个完全静态的场景)的脚本时,我得到 3FPS。在我用于场景渲染器的原型(prototype)中,唯一的事情是,我会使用一些缓慢而草率的 Python 代码来构建 map ,而对于完全相同的场景,这些代码恰好也以 3FPS 的速度运行。由于 pyglet 中的批处理是使用 C++ 管理的,因此我有一种令人烦恼的感觉,即我遗漏了一些明显导致批处理以 3FPS 绘制的东西。
这是我的场景初始化代码:
glViewport(0, 0, width, height)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(60.0, float(width)/height, .1, 10000.)
glMatrixMode(GL_MODELVIEW)
glClearColor(94.0/255.0, 161.0/255.0, 255.0/255.0, 0.5)
glClearDepth(1.0)
glShadeModel(GL_FLAT)
glEnable(GL_DEPTH_TEST)
glDepthFunc(GL_LEQUAL)
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST)
glEnable(GL_BLEND)
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
这是运行每一帧以渲染场景的代码:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT)
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
glTranslatef(0, 0, -1*self.mapZoomLevel)
glRotatef(self.mapPitch/5, 1, 0, 0)
glRotatef(self.mapRotation, 0, 0, 1)
glTranslatef(self.mapX, self.mapY, 0)
self.mapPrimitive.batch.draw()
请您参考如下方法:
如果您使用的是 CPython,则有一个快捷方式。 Pypy 支持 pyglet 有一段时间了(http://pypy.org/compat.html)。 切换到 Pypy,你可以很容易地获得性能提升,而且基本上不需要更改你的代码。 希望对你有所帮助。
