Files
FlaxEngine/Source/Engine/GraphicsDevice/DirectX/DX11/GPUSwapChainDX11.h
2023-01-10 15:29:37 +01:00

63 lines
1.4 KiB
C++

// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
#pragma once
#include "GPUDeviceDX11.h"
#include "GPUTextureDX11.h"
#include "Engine/Graphics/GPUSwapChain.h"
#include "../IncludeDirectXHeaders.h"
#if GRAPHICS_API_DIRECTX11
/// <summary>
/// Graphics Device rendering output for DirectX 11 backend.
/// </summary>
class GPUSwapChainDX11 : public GPUResourceDX11<GPUSwapChain>
{
friend class WindowsWindow;
friend class GPUContextDX11;
friend GPUDeviceDX11;
private:
#if PLATFORM_WINDOWS
HWND _windowHandle;
IDXGISwapChain* _swapChain;
bool _allowTearing, _isFullscreen;
#else
IUnknown* _windowHandle;
IDXGISwapChain1* _swapChain;
#endif
ID3D11Texture2D* _backBuffer;
GPUTextureViewDX11 _backBufferHandle;
public:
GPUSwapChainDX11(GPUDeviceDX11* device, Window* window);
private:
void getBackBuffer();
void releaseBackBuffer();
public:
// [GPUResourceDX11]
ID3D11Resource* GetResource() override;
// [GPUSwapChain]
bool IsFullscreen() override;
void SetFullscreen(bool isFullscreen) override;
GPUTextureView* GetBackBufferView() override;
void Present(bool vsync) override;
bool Resize(int32 width, int32 height) override;
void CopyBackbuffer(GPUContext* context, GPUTexture* dst) override;
protected:
// [GPUResourceDX11]
void OnReleaseGPU() final override;
};
#endif