Merge branch 'fix-ogl-clip-rect' into 'master'

Legacy GL: fix cliprect in top/left (fix stretched Kart Krew text for intro)

See merge request KartKrew/Kart!2167
This commit is contained in:
Oni 2024-03-29 19:43:04 +00:00
commit b8e37bff2f

View file

@ -235,33 +235,39 @@ void HWR_DrawStretchyFixedPatch(patch_t *gpatch, fixed_t x, fixed_t y, fixed_t p
if (clip) if (clip)
{ {
if (cx < clip->left) float cx1 = cx;
float cy1 = cy;
float cx2 = cx + fwidth;
float cy2 = cy + fheight;
if (cx1 < clip->left)
{ {
s_min = ((clip->left - cx) / fwidth) * s_max; s_min = (clip->left - cx1) / fwidth * hwrPatch->max_s;
cx = clip->left; cx1 = clip->left;
} }
if (cy < clip->top) if (cy1 < clip->top)
{ {
t_min = ((clip->top - cy) / fheight) * t_max; t_min = (clip->top - cy1) / fheight * hwrPatch->max_t;
cy = clip->top; cy1 = clip->top;
} }
if ((cx + fwidth) > clip->right) if (cx2 > clip->right)
{ {
const float n = (clip->right - cx); s_max = s_min + (clip->right - cx1) / fwidth * hwrPatch->max_s;
cx2 = clip->right;
s_max = (s_min + ((n / fwidth) * s_max));
fwidth = n;
} }
if ((cy + fheight) > clip->bottom) if (cy2 > clip->bottom)
{ {
const float n = (clip->bottom - cy); t_max = t_min + (clip->bottom - cy1) / fheight * hwrPatch->max_t;
cy2 = clip->bottom;
t_max = (t_min + ((n / fheight) * t_max));
fheight = n;
} }
cx = cx1;
cy = cy1;
fwidth = cx2 - cx1;
fheight = cy2 - cy1;
} }
// positions of the cx, cy, are between 0 and vid.width/vid.height now, we need them to be between -1 and 1 // positions of the cx, cy, are between 0 and vid.width/vid.height now, we need them to be between -1 and 1