setViewOffset method
void
setViewOffset(
- dynamic fullWidth,
- dynamic fullHeight,
- dynamic x,
- dynamic y,
- dynamic width,
- dynamic height,
- Sets an offset in a larger frustum. This is useful for multi-window or
- multi-monitor/multi-machine setups.
*
- For example, if you have 3x2 monitors and each monitor is 1920x1080 and
- the monitors are in grid like this
- +---+---+---+
- | A | B | C |
- +---+---+---+
- | D | E | F |
- +---+---+---+
- then for each monitor you would call it like this
- const w = 1920;
- const h = 1080;
- const fullWidth = w * 3;
- const fullHeight = h * 2;
- --A--
- camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );
- --B--
- camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );
- --C--
- camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );
- --D--
- camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );
- --E--
- camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );
- --F--
- camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );
- Note there is no reason monitors have to be the same size or in a grid.
- multi-monitor/multi-machine setups.
*
Implementation
void setViewOffset(fullWidth, fullHeight, x, y, width, height) {
aspect = fullWidth / fullHeight;
view ??= {
"enabled": true,
"fullWidth": 1,
"fullHeight": 1,
"offsetX": 0,
"offsetY": 0,
"width": 1,
"height": 1
};
view!["enabled"] = true;
view!["fullWidth"] = fullWidth;
view!["fullHeight"] = fullHeight;
view!["offsetX"] = x;
view!["offsetY"] = y;
view!["width"] = width;
view!["height"] = height;
updateProjectionMatrix();
}