pyglet ライブラリを使用してバッチを作成するコードがいくつかあります。完全にロードすると、全体で約 10,000 個のクワッドが含まれます。シーン全体 (完全に静的なシーン) をレンダリングするスクリプトを実行すると、3FPS が得られます。シーン レンダラーに使用したプロトタイプでは、遅くてずさんな python コードを使用してマップを構築していましたが、これはたまたま同じシーンで 3 FPS で実行されました。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()