Graphics: Fix transition when new scene has gray tone effect

Rendering the scene may cause PingPong swaps of front / backbuffer,
so don't take references to those buffers until after rendering.

Fixes #199
This commit is contained in:
Jonas Kulla 2018-05-21 12:15:05 +02:00
parent 7d6fbe637c
commit b10d22daeb
1 changed files with 3 additions and 3 deletions

View File

@ -714,6 +714,9 @@ void Graphics::transition(int duration,
setBrightness(255); setBrightness(255);
/* Capture new scene */
p->screen.composite();
/* The PP frontbuffer will hold the current scene after the /* The PP frontbuffer will hold the current scene after the
* composition step. Since the backbuffer is unused during * composition step. Since the backbuffer is unused during
* the transition, we can reuse it as the target buffer for * the transition, we can reuse it as the target buffer for
@ -721,9 +724,6 @@ void Graphics::transition(int duration,
TEXFBO &currentScene = p->screen.getPP().frontBuffer(); TEXFBO &currentScene = p->screen.getPP().frontBuffer();
TEXFBO &transBuffer = p->screen.getPP().backBuffer(); TEXFBO &transBuffer = p->screen.getPP().backBuffer();
/* Capture new scene */
p->screen.composite();
/* If no transition bitmap is provided, /* If no transition bitmap is provided,
* we can use a simplified shader */ * we can use a simplified shader */
TransShader &transShader = shState->shaders().trans; TransShader &transShader = shState->shaders().trans;