我有一些使用 pyglet 库创建批处理的代码。满载时,整个东西包含大约 10 000 个四边形。现在,当我运行渲染整个场景的脚本(它是一个完全静态的场景)时,我得到了 3FPS。在我用于场景渲染器的原型中,我将使用一些缓慢而草率的 Python 代码构建地图,而对于完全相同的场景,这些代码恰好也以 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()