Class VkViewport

All Implemented Interfaces:
AutoCloseable, NativeResource, Pointer

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

Despite their names, minDepth can be less than, equal to, or greater than maxDepth.

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 (or (maxDepth + minDepth) / 2 if VkPipelineViewportDepthClipControlCreateInfoEXT::negativeOneToOne is TRUE)
px = width
py = height
pz = maxDepth - minDepth (or (maxDepth - minDepth) / 2 if VkPipelineViewportDepthClipControlCreateInfoEXT::negativeOneToOne is TRUE)

If a render pass transform is enabled, the values (px,py) and (ox, oy) defining the viewport are transformed as described in render pass transform before participating in the viewport transform.

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 pre-rasterization shader stage.

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]
  • If the VK_KHR_maintenance1 extension is not enabled, the VK_AMD_negative_viewport_height extension is not enabled, and VkPhysicalDeviceProperties::apiVersion is less than Vulkan 1.1, height must be greater than 0.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]
  • If the VK_EXT_depth_range_unrestricted extension is not enabled, minDepth must be between 0.0 and 1.0, inclusive
  • If the VK_EXT_depth_range_unrestricted extension is not enabled, maxDepth must be between 0.0 and 1.0, inclusive
See Also

VkCommandBufferInheritanceViewportScissorInfoNV, VkPipelineViewportStateCreateInfo, CmdSetViewport, CmdSetViewportWithCount, CmdSetViewportWithCountEXT

Layout


 struct VkViewport {
     float x();
     float y();
     float width();
     float height();
     float minDepth();
     float maxDepth();
 }
  • Field Details

    • SIZEOF

      public static final int SIZEOF
      The struct size in bytes.
    • ALIGNOF

      public static final int ALIGNOF
      The struct alignment in bytes.
    • X

      public static final int X
      The struct member offsets.
    • Y

      public static final int Y
      The struct member offsets.
    • WIDTH

      public static final int WIDTH
      The struct member offsets.
    • HEIGHT

      public static final int HEIGHT
      The struct member offsets.
    • MINDEPTH

      public static final int MINDEPTH
      The struct member offsets.
    • MAXDEPTH

      public static final int MAXDEPTH
      The struct member offsets.
  • Constructor Details

    • VkViewport

      public VkViewport(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 Details

    • sizeof

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

      public float x()
      x and y are the viewport’s upper left corner (x,y).
    • y

      public float y()
      see x
    • width

      public float width()
      width and height are the viewport’s width and height, respectively.
    • height

      public float height()
      see width
    • minDepth

      public float minDepth()
      minDepth and maxDepth are the depth range for the viewport.
    • maxDepth

      public float maxDepth()
      see minDepth
    • 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.
    • calloc

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

      public static VkViewport create()
      Returns a new VkViewport instance allocated with BufferUtils.
    • 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(int capacity)
      Returns a new VkViewport.Buffer instance allocated with BufferUtils.
      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.
    • mallocStack

      @Deprecated public static VkViewport mallocStack()
      Deprecated.
      Deprecated for removal in 3.4.0. Use malloc(MemoryStack) instead.
    • callocStack

      @Deprecated public static VkViewport callocStack()
      Deprecated.
      Deprecated for removal in 3.4.0. Use calloc(MemoryStack) instead.
    • mallocStack

      @Deprecated public static VkViewport mallocStack(MemoryStack stack)
      Deprecated.
      Deprecated for removal in 3.4.0. Use malloc(MemoryStack) instead.
    • callocStack

      @Deprecated public static VkViewport callocStack(MemoryStack stack)
      Deprecated.
      Deprecated for removal in 3.4.0. Use calloc(MemoryStack) instead.
    • mallocStack

      @Deprecated public static VkViewport.Buffer mallocStack(int capacity)
      Deprecated.
      Deprecated for removal in 3.4.0. Use malloc(int, MemoryStack) instead.
    • callocStack

      @Deprecated public static VkViewport.Buffer callocStack(int capacity)
      Deprecated.
      Deprecated for removal in 3.4.0. Use calloc(int, MemoryStack) instead.
    • mallocStack

      @Deprecated public static VkViewport.Buffer mallocStack(int capacity, MemoryStack stack)
      Deprecated.
      Deprecated for removal in 3.4.0. Use malloc(int, MemoryStack) instead.
    • callocStack

      @Deprecated public static VkViewport.Buffer callocStack(int capacity, MemoryStack stack)
      Deprecated.
      Deprecated for removal in 3.4.0. Use calloc(int, MemoryStack) instead.
    • malloc

      public static VkViewport malloc(MemoryStack stack)
      Returns a new VkViewport instance allocated on the specified MemoryStack.
      Parameters:
      stack - the stack from which to allocate
    • calloc

      public static VkViewport calloc(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
    • malloc

      public static VkViewport.Buffer malloc(int capacity, MemoryStack stack)
      Returns a new VkViewport.Buffer instance allocated on the specified MemoryStack.
      Parameters:
      capacity - the buffer capacity
      stack - the stack from which to allocate
    • calloc

      public static VkViewport.Buffer calloc(int capacity, MemoryStack stack)
      Returns a new VkViewport.Buffer instance allocated on the specified MemoryStack and initializes all its bits to zero.
      Parameters:
      capacity - the buffer capacity
      stack - the stack from which to allocate
    • 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.