X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=laserbrain_demo;a=blobdiff_plain;f=src%2Frenderer.cc;h=a4f2edbccfaecef9655e9206542ed275b71f6b3f;hp=b9e5884b3c8309be990df2238e7d87fce9391a7d;hb=6ef619c6d92c698728576a4ec1c798a0f716d9a4;hpb=e5c3a6764a288f04cffbf02164fec7a2c2d80dea diff --git a/src/renderer.cc b/src/renderer.cc index b9e5884..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); } @@ -156,9 +161,7 @@ void Renderer::draw_object(Object *obj) const void Renderer::draw_mirror(FlatMirror *mir) const { push_render_target(rtmirror); - glClearColor(1, 0, 0, 1); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glClearColor(1, 1, 1, 1); glMatrixMode(GL_MODELVIEW); glPushMatrix();