Package icyllis.arc3d.engine

# Class FramebufferDesc

java.lang.Object
icyllis.arc3d.engine.FramebufferDesc

@Immutable public final class FramebufferDesc extends Object
Descriptor to create a framebuffer.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static final class`
  `FramebufferDesc.ColorAttachmentDesc`
  `static final class`
  `FramebufferDesc.DepthStencilAttachmentDesc`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `FLAG_GL_WRAP_DEFAULT_FB`
  This is a OpenGL only flag.
  `static final int`
  `FLAG_MANUAL_MSAA_RESOLVE`
  This means the render target is multi-sampled, and internally holds a non-msaa image for resolving into.
  `static final int`
  `FLAG_VK_WRAP_SECONDARY_CB`
  This is a Vulkan only flag.
  `final FramebufferDesc.ColorAttachmentDesc[]`
  `mColorAttachments`
  `final FramebufferDesc.DepthStencilAttachmentDesc`
  `mDepthStencilAttachment`
  `int`
  `mFramebufferFlags`
  `final int`
  `mHeight`
  If there are any attachments, then framebuffer bounds must be the intersection of all attachment bounds.
  `final int`
  `mSampleCount`
  `final int`
  `mWidth`
  If there are any attachments, then framebuffer bounds must be the intersection of all attachment bounds.
  `static final FramebufferDesc.ColorAttachmentDesc[]`
  `NO_COLOR_ATTACHMENTS`
  `static final FramebufferDesc.DepthStencilAttachmentDesc`
  `NO_DEPTH_STENCIL_ATTACHMENT`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `FramebufferDesc(int width, int height, int sampleCount, FramebufferDesc.ColorAttachmentDesc[] colorAttachments, FramebufferDesc.DepthStencilAttachmentDesc depthStencilAttachment)`
  `FramebufferDesc(int width, int height, int sampleCount, FramebufferDesc.ColorAttachmentDesc colorAttachment, FramebufferDesc.DepthStencilAttachmentDesc depthStencilAttachment)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `equals(Object o)`
  `int`
  `hashCode()`
  `boolean`
  `isStale()`
  Should the framebuffer keyed by this be deleted now? Used to delete framebuffers if one of the attachments has already been deleted.

  ### Methods inherited from class java.lang.Object

  `clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### FLAG_GL_WRAP_DEFAULT_FB

    @Internal public static final int FLAG_GL_WRAP_DEFAULT_FB
    This is a OpenGL only flag. It tells us that the internal render target wraps the OpenGL default framebuffer (id=0) that preserved by window. RT only.
    See Also:
      - Constant Field Values

  - ### FLAG_MANUAL_MSAA_RESOLVE

    @Internal public static final int FLAG_MANUAL_MSAA_RESOLVE
    This means the render target is multi-sampled, and internally holds a non-msaa image for resolving into. The render target resolves itself by blit-ting into this internal image. (It might or might not have the internal image access, but if it does, we always resolve the render target before accessing this image's data.) RT only.
    See Also:
      - Constant Field Values

  - ### FLAG_VK_WRAP_SECONDARY_CB

    @Internal public static final int FLAG_VK_WRAP_SECONDARY_CB
    This is a Vulkan only flag. It tells us that the internal render target is wrapping a raw Vulkan secondary command buffer. RT only.
    See Also:
      - Constant Field Values

  - ### mColorAttachments

    @Nonnull public final FramebufferDesc.ColorAttachmentDesc[] mColorAttachments

  - ### NO_COLOR_ATTACHMENTS

    public static final FramebufferDesc.ColorAttachmentDesc[] NO_COLOR_ATTACHMENTS

  - ### mDepthStencilAttachment

    @Nonnull public final FramebufferDesc.DepthStencilAttachmentDesc mDepthStencilAttachment

  - ### NO_DEPTH_STENCIL_ATTACHMENT

    public static final FramebufferDesc.DepthStencilAttachmentDesc NO_DEPTH_STENCIL_ATTACHMENT

  - ### mWidth

    public final int mWidth
    If there are any attachments, then framebuffer bounds must be the intersection of all attachment bounds.

  - ### mHeight

    public final int mHeight
    If there are any attachments, then framebuffer bounds must be the intersection of all attachment bounds.

  - ### mSampleCount

    public final int mSampleCount

  - ### mFramebufferFlags

    public int mFramebufferFlags

- ## Constructor Details

  - ### FramebufferDesc

    public FramebufferDesc(int width, int height, int sampleCount, @Nullable FramebufferDesc.ColorAttachmentDesc colorAttachment, @Nullable FramebufferDesc.DepthStencilAttachmentDesc depthStencilAttachment)

  - ### FramebufferDesc

    public FramebufferDesc(int width, int height, int sampleCount, @Nullable FramebufferDesc.ColorAttachmentDesc[] colorAttachments, @Nullable FramebufferDesc.DepthStencilAttachmentDesc depthStencilAttachment)

- ## Method Details

  - ### isStale

    public boolean isStale()
    Should the framebuffer keyed by this be deleted now? Used to delete framebuffers if one of the attachments has already been deleted.
    Returns:
      true to delete, false to keep

  - ### hashCode

    public int hashCode()
    Overrides:
      `hashCode` in class `Object`

  - ### equals

    public boolean equals(Object o)
    Overrides:
      `equals` in class `Object`