Explorar el Código

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 hace 9 años
padre
commit
25ad63d33d
Se han modificado 3 ficheros con 26 adiciones y 10 borrados
  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 Ver fichero

@@ -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 Ver fichero

@@ -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 Ver fichero

@@ -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();


Cargando…
Cancelar
Guardar