We are developing a game (cross-platform) using Irrlicht. The game has many (around 200 - 500) dynamic objects flying around during the game. Most of these objects are static mesh and build from 20 - 50 unique Meshes.

We created seperate scenenodes for each object and referring its mesh instance. But the output was very much unexpected.

Menu screen: (150 tris - Just to show you the full speed rendering performance of 2 test computers) a) NVidia Quadro FX 3800 with 1GB: 1600 FPS DirectX and 2600 FPS on OpenGL b) Mac Mini with Geforce 9400M 256mb: 260 FPS in OpenGL

Now inside the game in a test level: (160 dynamic objects counting around 10K tris): a) NVidia Quadro FX 3800 with 1GB: 45 FPS DirectX and 50 FPS on OpenGL b) Mac Mini with Geforce 9400M 256mb: 45 FPS in OpenGL

Obviously we don't have the option of mesh batch rendering as most of the objects are dynamic. And the one big static terrain is already in single mesh buffer. To add more information, we use one 2048 png for texture for most of the dynamic objects. And our collision detection hardly and other calculations hardly make any impact on FPS. So we understood its the draw calls we make that eats up all FPS. Is there a way we can optimize the rendering, or are we missing something?

  • 2
    \$\begingroup\$ What is a "dynamic object"? \$\endgroup\$ – Nicol Bolas Sep 3 '12 at 0:02
  • \$\begingroup\$ Dynamic object , I mean they often move and rotate \$\endgroup\$ – codetiger Sep 3 '12 at 0:32
  • 1
    \$\begingroup\$ Moving and rotation is no problem for batching, only changing the mesh itself dynamically is. \$\endgroup\$ – API-Beast Sep 3 '12 at 0:56
  • \$\begingroup\$ Oh I thought batching is only useful for different static meshes \$\endgroup\$ – codetiger Sep 3 '12 at 2:21
  • \$\begingroup\$ Can someone point me to the right batching that allows moving/rotating instances every frame. \$\endgroup\$ – codetiger Sep 3 '12 at 2:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.