Class VkViewport

  • All Implemented Interfaces:
    java.lang.AutoCloseable, NativeResource, Pointer

    public class VkViewport
    extends Struct
    implements NativeResource
    Structure specifying a viewport.
    Description

    The framebuffer depth coordinate zf may be represented using either a fixed-point or floating-point representation. However, a floating-point representation must be used if the depth/stencil attachment has a floating-point depth component. If an m-bit fixed-point representation is used, we assume that it represents each value k / (2m - 1), where k ∈ { 0, 1, ..., 2m-1 }, as k (e.g. 1.0 is represented in binary as a string of all ones).

    The viewport parameters shown in the above equations are found from these values as

    ox = x + width / 2
    oy = y + height / 2
    oz = minDepth
    px = width
    py = height
    pz = maxDepth - minDepth.

    The application can specify a negative term for height, which has the effect of negating the y coordinate in clip space before performing the transform. When using a negative height, the application should also adjust the y value to point to the lower left corner of the viewport instead of the upper left corner. Using the negative height allows the application to avoid having to negate the y component of the Position output from the last vertex processing stage in shaders that also target other graphics APIs.

    The width and height of the implementation-dependent maximum viewport dimensions must be greater than or equal to the width and height of the largest image which can be created and attached to a framebuffer.

    The floating-point viewport bounds are represented with an implementation-dependent precision.

    Valid Usage
    • width must be greater than 0.0
    • width must be less than or equal to VkPhysicalDeviceLimits::maxViewportDimensions[0]
    • The absolute value of height must be less than or equal to VkPhysicalDeviceLimits::maxViewportDimensions[1]
    • x must be greater than or equal to viewportBoundsRange[0]
    • (x + width) must be less than or equal to viewportBoundsRange[1]
    • y must be greater than or equal to viewportBoundsRange[0]
    • y must be less than or equal to viewportBoundsRange[1]
    • (y + height) must be greater than or equal to viewportBoundsRange[0]
    • (y + height) must be less than or equal to viewportBoundsRange[1]
    • Unless VK_EXT_depth_range_unrestricted extension is enabled minDepth must be between 0.0 and 1.0, inclusive
    • Unless VK_EXT_depth_range_unrestricted extension is enabled maxDepth must be between 0.0 and 1.0, inclusive
    See Also

    VkPipelineViewportStateCreateInfo, CmdSetViewport

    Member documentation

    • xx and y are the viewport’s upper left corner (x,y).
    • y – see x
    • widthwidth and height are the viewport’s width and height, respectively.
    • height – see width
    • minDepthminDepth and maxDepth are the depth range for the viewport. It is valid for minDepth to be greater than or equal to maxDepth.
    • maxDepth – see minDepth

    Layout

    
     struct VkViewport {
         float x;
         float y;
         float width;
         float height;
         float minDepth;
         float maxDepth;
     }
    • Field Detail

      • SIZEOF

        The struct size in bytes.
      • ALIGNOF

        The struct alignment in bytes.
      • X, Y, WIDTH, HEIGHT, MINDEPTH, MAXDEPTH

        The struct member offsets.
    • Constructor Detail

      • VkViewport

        public VkViewport​(java.nio.ByteBuffer container)
        Creates a VkViewport instance at the current position of the specified ByteBuffer container. Changes to the buffer's content will be visible to the struct instance and vice versa.

        The created instance holds a strong reference to the container object.

    • Method Detail

      • sizeof

        public int sizeof()
        Description copied from class: Struct
        Returns sizeof(struct).
        Specified by:
        sizeof in class Struct
      • x

        public float x()
        Returns the value of the x field.
      • y

        public float y()
        Returns the value of the y field.
      • width

        public float width()
        Returns the value of the width field.
      • height

        public float height()
        Returns the value of the height field.
      • minDepth

        public float minDepth()
        Returns the value of the minDepth field.
      • maxDepth

        public float maxDepth()
        Returns the value of the maxDepth field.
      • x

        public VkViewport x​(float value)
        Sets the specified value to the x field.
      • y

        public VkViewport y​(float value)
        Sets the specified value to the y field.
      • width

        public VkViewport width​(float value)
        Sets the specified value to the width field.
      • height

        public VkViewport height​(float value)
        Sets the specified value to the height field.
      • minDepth

        public VkViewport minDepth​(float value)
        Sets the specified value to the minDepth field.
      • maxDepth

        public VkViewport maxDepth​(float value)
        Sets the specified value to the maxDepth field.
      • set

        public VkViewport set​(float x,
                              float y,
                              float width,
                              float height,
                              float minDepth,
                              float maxDepth)
        Initializes this struct with the specified values.
      • set

        public VkViewport set​(VkViewport src)
        Copies the specified struct data to this struct.
        Parameters:
        src - the source struct
        Returns:
        this struct
      • malloc

        public static VkViewport malloc()
        Returns a new VkViewport instance allocated with memAlloc. The instance must be explicitly freed.
      • create

        public static VkViewport create​(long address)
        Returns a new VkViewport instance for the specified memory address.
      • createSafe

        @Nullable
        public static VkViewport createSafe​(long address)
        Like create, but returns null if address is NULL.
      • malloc

        public static VkViewport.Buffer malloc​(int capacity)
        Returns a new VkViewport.Buffer instance allocated with memAlloc. The instance must be explicitly freed.
        Parameters:
        capacity - the buffer capacity
      • calloc

        public static VkViewport.Buffer calloc​(int capacity)
        Returns a new VkViewport.Buffer instance allocated with memCalloc. The instance must be explicitly freed.
        Parameters:
        capacity - the buffer capacity
      • create

        public static VkViewport.Buffer create​(long address,
                                               int capacity)
        Create a VkViewport.Buffer instance at the specified memory.
        Parameters:
        address - the memory address
        capacity - the buffer capacity
      • createSafe

        @Nullable
        public static VkViewport.Buffer createSafe​(long address,
                                                   int capacity)
        Like create, but returns null if address is NULL.
      • callocStack

        public static VkViewport callocStack()
        Returns a new VkViewport instance allocated on the thread-local MemoryStack and initializes all its bits to zero.
      • callocStack

        public static VkViewport callocStack​(MemoryStack stack)
        Returns a new VkViewport instance allocated on the specified MemoryStack and initializes all its bits to zero.
        Parameters:
        stack - the stack from which to allocate
      • callocStack

        public static VkViewport.Buffer callocStack​(int capacity)
        Returns a new VkViewport.Buffer instance allocated on the thread-local MemoryStack and initializes all its bits to zero.
        Parameters:
        capacity - the buffer capacity
      • callocStack

        public static VkViewport.Buffer callocStack​(int capacity,
                                                    MemoryStack stack)
        Returns a new VkViewport.Buffer instance allocated on the specified MemoryStack and initializes all its bits to zero.
        Parameters:
        stack - the stack from which to allocate
        capacity - the buffer capacity
      • nx

        public static float nx​(long struct)
        Unsafe version of x().
      • ny

        public static float ny​(long struct)
        Unsafe version of y().
      • nwidth

        public static float nwidth​(long struct)
        Unsafe version of width().
      • nheight

        public static float nheight​(long struct)
        Unsafe version of height().
      • nminDepth

        public static float nminDepth​(long struct)
        Unsafe version of minDepth().
      • nmaxDepth

        public static float nmaxDepth​(long struct)
        Unsafe version of maxDepth().
      • nx

        public static void nx​(long struct,
                              float value)
        Unsafe version of x.
      • ny

        public static void ny​(long struct,
                              float value)
        Unsafe version of y.
      • nwidth

        public static void nwidth​(long struct,
                                  float value)
        Unsafe version of width.
      • nheight

        public static void nheight​(long struct,
                                   float value)
        Unsafe version of height.
      • nminDepth

        public static void nminDepth​(long struct,
                                     float value)
        Unsafe version of minDepth.
      • nmaxDepth

        public static void nmaxDepth​(long struct,
                                     float value)
        Unsafe version of maxDepth.