Browse Source

scene: add Scene::pre_render and post_render

This allows actors to perform draw commands in TickDraw(), even
if it’s not exactly what we want in the future.
undefined
Sam Hocevar 9 years ago
parent
commit
25ad63d33d
3 changed files with 26 additions and 10 deletions
  1. +4
    -0
      src/engine/ticker.cpp
  2. +20
    -10
      src/scene.cpp
  3. +2
    -0
      src/scene.h

+ 4
- 0
src/engine/ticker.cpp View File

@@ -432,6 +432,8 @@ void TickerData::DrawThreadTick()
scene.EnableDisplay(); scene.EnableDisplay();
Renderer::Get(idx)->Clear(ClearMask::All); Renderer::Get(idx)->Clear(ClearMask::All);


scene.pre_render(data->deltatime);

/* Tick objects for the draw loop */ /* Tick objects for the draw loop */
for (int g = Entity::DRAWGROUP_BEGIN; g < Entity::DRAWGROUP_END && !data->quit /* Stop as soon as required */; ++g) for (int g = Entity::DRAWGROUP_BEGIN; g < Entity::DRAWGROUP_END && !data->quit /* Stop as soon as required */; ++g)
{ {
@@ -470,6 +472,8 @@ void TickerData::DrawThreadTick()
/* Do the render step */ /* Do the render step */
scene.render(data->deltatime); scene.render(data->deltatime);


scene.post_render(data->deltatime);

/* Disable display */ /* Disable display */
scene.DisableDisplay(); scene.DisableDisplay();
} }


+ 20
- 10
src/scene.cpp View File

@@ -622,12 +622,11 @@ void Scene::DisableDisplay()
data->m_display->Disable(); data->m_display->Disable();
} }


/* Render everything that the scene contains */
void Scene::render(float seconds)
{
bool do_pp = true;
static bool do_pp = true;


gpu_marker("Start Render");
void Scene::pre_render(float seconds)
{
gpu_marker("Pre Render");


/* First render into the offline buffer */ /* First render into the offline buffer */
if (do_pp) if (do_pp)
@@ -644,12 +643,23 @@ void Scene::render(float seconds)
} }


Renderer::Get()->Clear(ClearMask::Color | ClearMask::Depth); Renderer::Get()->Clear(ClearMask::Color | ClearMask::Depth);

// FIXME: get rid of the delta time argument
render_primitives();
render_tiles();
render_lines(seconds);
} }
}

/* Render everything that the scene contains */
void Scene::render(float seconds)
{
gpu_marker("Render");

// FIXME: get rid of the delta time argument
render_primitives();
render_tiles();
render_lines(seconds);
}

void Scene::post_render(float seconds)
{
gpu_marker("Post Render");


if (do_pp) if (do_pp)
{ {


+ 2
- 0
src/scene.h View File

@@ -251,7 +251,9 @@ public:
void EnableDisplay(); void EnableDisplay();
void DisableDisplay(); void DisableDisplay();


void pre_render(float seconds);
void render(float seconds); void render(float seconds);
void post_render(float seconds);


private: private:
void render_primitives(); void render_primitives();


Loading…
Cancel
Save