We've been creating an endless runner which is currently set up to delete any tiles left behind off screen and create new tiles ahead of the player, trouble with this is that its causing horrible lag. I can only imagine its the resource loading that's slowing it down.
Object initialisation: http://pastebin.com/mPXnHWPw
Typically creating/removing 5/10 of these objects per second. It was previously setup to recycle objects by moving them ahead of the player but the level generation has got to the point where it seemed easier just to create new ones.
Loading resources mid-game will indeed cause slow down. However, the resource pool caches loaded resources - calling LoadResource() on existing resources is pretty efficient, and shouldn't be a problem. It looks like you are using texture atlases - if all your images are all on 1 or 2 texture atlases calling LoadResource() shouldn't be your issue. That said, it can't hurt to load them once and store them rather than repeated LoadResource() calls.
However, it looks like you are creating a new material for every game object. This is really inefficient, as the renderer can no longer batch objects together - a really important optimisation. To solve this, only create a new material when absolutely necessary: in other words when using a different texture atlas. You can use
resourcePool->GetResource<CSRendering::Material>(id) to get materials you have already created through the resource pool.
Hope that helps! Let me know if you're still having performance issues when sharing materials.