1.3 KiB
title | date | weight |
---|---|---|
Viewport State | 2021-01-28T13:20:55-08:00 | 8 |
The viewport state describes the dimensions of the viewport, which is an area of the framebuffer that will be rendered to.
You define a viewport array like so:
var myViewport = new Viewport
{
X = 0,
Y = 0,
W = 1280,
H = 720,
MinDepth = 0,
MaxDepth = 1
};
var myViewports = new Viewport[] { myViewport };
This creates a 1280x720 viewport originating at the top-left corner with depth ranging from 0 to 1.
You may provide multiple viewports. This can be handy for cases like, for example, rendering a picture-in-picture style mode. Postmodern!
You also need to provide a "scissor rectangle". This is another way to reduce the number of pixels that will be rendered. When you define a scissor rectangle, any pixels outside of the rectangle are discarded.
In this example, we want to render to the entire viewport, so we define a scissor rectangle with the same dimensions as the viewport.
var myScissorRectangle = new Rect
{
X = 0,
Y = 0,
W = 1280,
H = 720
};
var myScissors = new Rect[] { myScissorRectangle };
Finally we hand off these arrays to the ViewportState struct:
var myViewportState = new ViewportState
{
Viewports = myViewports,
Scissors = myScissors;
}