![]() |
Open 3D Engine Atom Gem API Reference
22.10.0
O3DE is an open-source, fully-featured, high-fidelity, modular 3D engine for building games and simulations, available to every industry.
|
#include <SwapChain.h>
Inherits AZ::RHI::ImagePoolBase.
Classes | |
struct | InitImageRequest |
Public Member Functions | |
AZ_RTTI (SwapChain, "{888B64A5-D956-406F-9C33-CF6A54FC41B0}", Object) | |
ResultCode | Init (RHI::Device &device, const SwapChainDescriptor &descriptor) |
Initializes the swap chain, making it ready for attachment. | |
void | Present () |
Presents the swap chain to the display, and rotates the images. | |
void | SetVerticalSyncInterval (uint32_t verticalSyncInterval) |
ResultCode | Resize (const SwapChainDimensions &dimensions) |
uint32_t | GetImageCount () const |
Returns the number of images in the swap chain. | |
uint32_t | GetCurrentImageIndex () const |
Returns the current image index of the swap chain. | |
Image * | GetCurrentImage () const |
Returns the current image of the swap chain. | |
Image * | GetImage (uint32_t index) const |
const AttachmentId & | GetAttachmentId () const |
Returns the ID used for the SwapChain's attachment. | |
const RHI::SwapChainDescriptor & | GetDescriptor () const override final |
Returns the descriptor provided when initializing the swap chain. | |
virtual bool | IsExclusiveFullScreenPreferred () const |
Returns True if the swap chain prefers to use exclusive full screen mode. | |
virtual bool | GetExclusiveFullScreenState () const |
Returns True if the swap chain prefers exclusive full screen mode and it is currently true, false otherwise. | |
virtual bool | SetExclusiveFullScreenState ([[maybe_unused]]bool fullScreenState) |
Return True if the swap chain prefers exclusive full screen mode and a transition happened, false otherwise. | |
virtual void | ProcessRecreation () |
![]() | |
AZ_RTTI (ImagePoolBase, "{6353E390-C5D2-42FF-8AA9-9AFCD1F2F1B5}", ResourcePool) | |
![]() | |
AZ_RTTI (ResourcePool, "{757EB674-25DC-4D00-9808-D3DAF33A4EFE}", DeviceObject) | |
void | Shutdown () override final |
Shuts down the pool. This method will shutdown all resources associated with the pool. | |
template<typename ResourceType > | |
void | ForEach (AZStd::function< void(ResourceType &)> callback) |
template<typename ResourceType > | |
void | ForEach (AZStd::function< void(const ResourceType &)> callback) const |
uint32_t | GetResourceCount () const |
Returns the number of resources in the pool. | |
ResourcePoolResolver * | GetResolver () |
Returns the resolver for this pool. | |
const ResourcePoolResolver * | GetResolver () const |
const HeapMemoryUsage & | GetHeapMemoryUsage (HeapMemoryLevel heapMemoryLevel) const |
Returns the memory used by this pool for a specific heap type. | |
const PoolMemoryUsage & | GetMemoryUsage () const |
Returns the memory used by this pool. | |
![]() | |
AZ_RTTI (DeviceObject, "{17D34F71-944C-4AF5-9823-627474C4C0A6}", Object) | |
bool | IsInitialized () const |
Returns whether the device object is initialized. | |
Device & | GetDevice () const |
![]() | |
AZ_RTTI (Object, "{E43378F1-2331-4173-94B8-990ED20E6003}") | |
void | SetName (const Name &name) |
const Name & | GetName () const |
Protected Member Functions | |
void | ComputeFragmentation () const override |
Fragmentation is not an issue (or measured) for the swapchain image pool. | |
void | ShutdownImages () |
Shutdown and clear all the images. | |
ResultCode | InitImages () |
Initialized all the images. | |
RHI::XRRenderingInterface * | GetXRSystem () const |
Return the xr system interface. | |
![]() | |
ResultCode | InitImage (Image *image, const ImageDescriptor &descriptor, PlatformMethod platformInitResourceMethod) |
![]() | |
void | OnFrameBegin () override |
void | OnFrameCompile () override |
void | OnFrameEnd () override |
void | SetResolver (AZStd::unique_ptr< ResourcePoolResolver > &&resolvePolicy) |
ResultCode | Init (Device &device, const ResourcePoolDescriptor &descriptor, const PlatformMethod &initMethod) |
ResultCode | InitResource (Resource *resource, const PlatformMethod &initResourceMethod) |
bool | ValidateIsRegistered (const Resource *resource) const |
bool | ValidateIsUnregistered (const Resource *resource) const |
bool | ValidateIsInitialized () const |
Validates that the resource pool is initialized and ready to service requests. | |
bool | ValidateNotProcessingFrame () const |
Validates that we are not in the frame processing phase. | |
![]() | |
void | Init (Device &device) |
The derived class should call this method to assign the device. | |
Protected Attributes | |
bool | m_pendingRecreation = false |
Flag indicating if swapchain recreation is needed at the end of the frame. | |
![]() | |
PoolMemoryUsage | m_memoryUsage |
Additional Inherited Members | |
![]() | |
using | PlatformMethod = AZStd::function< RHI::ResultCode()> |
A simple functor that returns a result code. | |
The platform-independent swap chain base class. Swap chains contain a "chain" of images which map to a platform-specific window, displayed on a physical monitor. The user is allowed to adjust the swap chain outside of the current FrameScheduler frame. Doing so within a frame scheduler frame results in undefined behavior.
The frame scheduler controls presentation of the swap chain. The user may attach a swap chain to a scope in order to render to the current image.
Image* AZ::RHI::SwapChain::GetImage | ( | uint32_t | index | ) | const |
Returns the image associated with the provided index, where the total number of images is given by GetImageCount().
|
inlinevirtual |
Recreate the swapchain if it becomes invalid during presenting. This should happen at the end of the frame due to images being used as attachments in the frame graph.
ResultCode AZ::RHI::SwapChain::Resize | ( | const SwapChainDimensions & | dimensions | ) |
Resizes the display resolution of the swap chain. Ideally, this matches the platform window resolution. Typically, the resize operation will occur in reaction to a platform window size change. Takes effect immediately and results in a GPU pipeline flush.
void AZ::RHI::SwapChain::SetVerticalSyncInterval | ( | uint32_t | verticalSyncInterval | ) |
Sets the vertical sync interval for the swap chain. 0 - No vsync. N - Sync to every N vertical refresh.
A value of 1 syncs to the refresh rate of the monitor.