Теперь рендеринг карты глубины и шедоумап ещё проще:
class World : public BaseWorld{
public:
World();
virtual ~World();
virtual void clear();
virtual void addEntity( Entity* entity );
virtual void addRenderableEntity( RenderableEntity* entity );
virtual const Vector<Entity*>* getEntityList()const;
virtual void removeEntity( Entity* entity );
virtual void removeRenderableEntity( RenderableEntity* entity );
virtual const Vector<RenderableEntity*>* getRenderableEntityList()const;
virtual void update( float delta );
// normal sorted rendering
virtual void renderFrontToBack( Camera* camera );
virtual void renderBackToFront( Camera* camera );
// normal rendering with sort for alpha blend
virtual void render( Camera* camera , bool sort = true );
// depth only rendering
virtual void renderDepth( Camera* camera );
// shadow depth rendering
virtual void renderShadowDepth( Camera* camera );
protected:
Vector<Entity*> entities;
Vector<RenderableEntity*> renderable_entities;
};
Теперь "мир" имеет методы renderDepth,и renderShadowDepth,renderShadowDepth отличается от renderDepth тем что отрисовываются только те интиии у которых флаг ShadowCaster равен true.