fix viewports
This commit is contained in:
parent
e45a354a05
commit
cf12fbfef7
|
|
@ -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;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue