All pastes #342845 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-02-06 16:23 UTC
rendered paste body
PAINTING:
fullx = screen->width * num_viewports_w;
fully = screen->height * num_viewports_h;

calculate a screen transformation where the whole area [0..fullx][0..fully] can be displayed

apply screen transformation

save the matrix

for all viewports
{
pushmatrix
gltranslate(s->x,s-y,0);
paint viewport;
popmatrix
// this will paint viewport 1 at [0..s->width][0..s->height] and viewport 2 at [s->width..2*s-width][0..s->height] ...
}

MOUSETRANSFORMATION:

mx/my = mouse position

unproject p1(mx,my,0) and p2(mx,my,-1)
calulate the vector v = p2' - p1'
find the there the line l = p1' + alpha v hits the plane at z = 0;
this will result in correct coordinates for the mouse and viewport