auto shader = assetman.LoadShader("shaders/test_shader1");
shader->Set(renderer);
fplbase::RenderTarget bufferFrame1;
bufferFrame1.Initialize(renderer.window_size());
fplbase::RenderTarget bufferFrame2;
bufferFrame2.Initialize(renderer.window_size());
fplbase::RenderTarget* bufferFramePtr1 = NULL;
fplbase::RenderTarget* bufferFramePtr2 = NULL;
while (!input.exit_requested()) {
renderer.AdvanceFrame(input.minimized(), input.Time());
input.AdvanceFrame(&renderer.window_size());
const mathfu::vec2 res(renderer.window_size());
const float aspect_ratio = res.x() / res.y();
renderer.set_model_view_projection(mathfu::mat4::Ortho(-aspect_ratio, aspect_ratio, -1.0f, 1.0f, -1.0, 1.0));
renderer.ClearFrameBuffer(mathfu::vec4(0.0f)); //Do I really need to do this every iteration?
bufferFramePtr1 = &bufferFrame1;
bufferFramePtr2 = &bufferFrame2;
//after this iteration, the other frame buffer will be set as the active texture.
bufferFrame1.BindAsTexture(0);
//Render texture (bufferFrame1) to bufferFrame2
bufferFrame2.SetAsRenderTarget();
fplbase::Mesh::RenderAAQuadAlongX(
mathfu::vec3(-aspect_ratio, 1.0f, 0.0f),
mathfu::vec3(aspect_ratio, -1.0f, 0.0f));
//Swap
bufferFrame1 = *bufferFramePtr2;
bufferFrame2 = *bufferFramePtr1;
renderer.ClearFrameBuffer(mathfu::vec4(0.0f)); //Had to put his here for it work. I don't know why?
//Render texture to screen
fplbase::RenderTarget::ScreenRenderTarget(renderer).SetAsRenderTarget();
fplbase::Mesh::RenderAAQuadAlongX(
mathfu::vec3(-aspect_ratio, 1.0f, 0.0f),
mathfu::vec3(aspect_ratio, -1.0f, 0.0f));
}