X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=laserbrain_demo;a=blobdiff_plain;f=src%2Frenderer.cc;h=a4f2edbccfaecef9655e9206542ed275b71f6b3f;hp=0d23e383893ff5047d13857d3939c2114966ada3;hb=2829b50d6b3d9e97fc9399f5b6929f7d64021366;hpb=197bafc7f54795243d4c217c2efcf41f01d4100d diff --git a/src/renderer.cc b/src/renderer.cc index 0d23e38..a4f2edb 100644 --- a/src/renderer.cc +++ b/src/renderer.cc @@ -15,6 +15,7 @@ static const char *use_flag_str[] = { static RenderTarget *rtmirror; +static int cur_vport[4]; Renderer::Renderer() { @@ -90,12 +91,15 @@ void Renderer::draw() const if(DO_MIRRORS && current_render_target() != rtmirror) { // check if the render target needs resizing if(rtmirror->get_width() != vp_width || rtmirror->get_height() != vp_height) { + info_log("resizing mirror render target to %dx%d\n", vp_width, vp_height); if(!rtmirror->resize(vp_width, vp_height)) { error_log("failed to resize mirror render target (%dx%d)\n", vp_width, vp_height); goto abort_mirrors; } } + glGetIntegerv(GL_VIEWPORT, cur_vport); + FlatMirror *mir = mscn->mirrors; while(mir) { draw_mirror(mir); @@ -144,6 +148,7 @@ void Renderer::draw_object(Object *obj) const if(use_mask & USE_MIRROR) { float sx = 1.0f / rtmirror->texture()->get_width(); float sy = 1.0f / rtmirror->texture()->get_height(); + set_uniform_float2(sdr, "mirtex_offs", -cur_vport[0], -cur_vport[1]); set_uniform_float2(sdr, "mirtex_scale", sx, sy); set_uniform_float(sdr, "reflectivity", obj->mtl.reflect); }