From cf12fbfef716f2948965c4925296325926ef695f Mon Sep 17 00:00:00 2001 From: David Rose Date: Mon, 5 May 2008 06:27:00 +0000 Subject: [PATCH] fix viewports --- .../tinydisplay/tinyGraphicsStateGuardian.cxx | 25 +++---------------- panda/src/tinydisplay/zbuffer.c | 13 +++++----- 2 files changed, 11 insertions(+), 27 deletions(-) diff --git a/panda/src/tinydisplay/tinyGraphicsStateGuardian.cxx b/panda/src/tinydisplay/tinyGraphicsStateGuardian.cxx index 61c36aaf41..b34bf1660e 100644 --- a/panda/src/tinydisplay/tinyGraphicsStateGuardian.cxx +++ b/panda/src/tinydisplay/tinyGraphicsStateGuardian.cxx @@ -720,33 +720,16 @@ prepare_display_region(DisplayRegionPipelineReader *dr, nassertv(dr != (DisplayRegionPipelineReader *)NULL); GraphicsStateGuardian::prepare_display_region(dr, stereo_channel); - int l, b, w, h; - dr->get_region_pixels(l, b, w, h); - int xmin = GLint(l); - int ymin = GLint(b); - int xsize = GLsizei(w); - int ysize = GLsizei(h); - - int xsize_req = xmin + xsize; - int ysize_req = ymin + ysize; - - if (_c->gl_resize_viewport && - _c->gl_resize_viewport(_c, &xsize_req, &ysize_req) != 0) { - gl_fatal_error("glViewport: error while resizing display"); - } - - xsize = xsize_req - xmin; - ysize = ysize_req - ymin; - if (xsize <= 0 || ysize <= 0) { - gl_fatal_error("glViewport: size too small"); - } + int xmin, ymin, xsize, ysize; + dr->get_region_pixels_i(xmin, ymin, xsize, ysize); _c->viewport.xmin = xmin; _c->viewport.ymin = ymin; _c->viewport.xsize = xsize; _c->viewport.ysize = ysize; - gl_eval_viewport(_c); + + GLViewport *v = &_c->viewport; } //////////////////////////////////////////////////////////////////// diff --git a/panda/src/tinydisplay/zbuffer.c b/panda/src/tinydisplay/zbuffer.c index 56712eb6fb..2b74e92546 100644 --- a/panda/src/tinydisplay/zbuffer.c +++ b/panda/src/tinydisplay/zbuffer.c @@ -320,20 +320,21 @@ void ZB_clear_viewport(ZBuffer * zb, int clear_z, int z, int y; PIXEL *pp; unsigned short *zz; - + int ytop; + if (clear_z) { - zz = zb->zbuf + xmin; - for (y = ymin; y < ymin + ysize; ++y) { + zz = zb->zbuf + xmin + ymin * zb->xsize; + for (y = 0; y < ysize; ++y) { memset_s(zz, z, xsize); zz += zb->xsize; } } if (clear_color) { color = RGBA_TO_PIXEL(r, g, b, a); - pp = zb->pbuf + xmin; - for (y = ymin; y < ymin + ysize; ++y) { + pp = zb->pbuf + xmin + ymin * zb->xsize; + for (y = 0; y < ysize; ++y) { memset_l(pp, color, xsize); - pp = (PIXEL *) ((char *) pp + zb->linesize); + pp += zb->xsize; } } }