45 lines
1.5 KiB
C++
45 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include "IEngine.h"
|
|
#include "ISwapChain.h"
|
|
#include "../RenderTargetBase.h"
|
|
|
|
|
|
class SwapChain
|
|
: public RenderTargetBase
|
|
, public ISwapChain
|
|
{
|
|
public:
|
|
SwapChain(IEngine& argEngine);
|
|
virtual ~SwapChain();
|
|
|
|
virtual void SetWindowParameters(HWND argWindowHandle, uint32 argWidth = 0, uint32 argHeight = 0, uint32 argRefreshRate = 0, DataFormat::Enumeration argFormat = DataFormat::Unknown, uint32 argMultiSampleCount = 0, uint32 argMultiSampleQuality = 0);
|
|
virtual void Resize(int argWidth, int argHeight);
|
|
virtual void Present();
|
|
|
|
virtual bool get_Fullscreen() const { return !m_SwapChainDescription.Windowed; }
|
|
virtual void set_Fullscreen(bool argState);
|
|
virtual bool get_VSync() const { return m_VSync; }
|
|
virtual void set_VSync(bool argState) {m_VSync = argState; }
|
|
|
|
virtual IRenderTargetBase& get_Base() { return *dynamic_cast<IRenderTargetBase*>(this); }
|
|
|
|
// IRenderTargetBase
|
|
virtual uint32 get_RenderTargetWidth() const { return m_SwapChainDescription.BufferDesc.Width; }
|
|
virtual uint32 get_RenderTargetHeight() const { return m_SwapChainDescription.BufferDesc.Height; }
|
|
virtual DataFormat::Enumeration get_RenderTargetFormat() const { return (DataFormat::Enumeration)m_SwapChainDescription.BufferDesc.Format; }
|
|
|
|
protected:
|
|
//ICommandUser
|
|
virtual string8 get_UserName() const { return "SwapChain"; }
|
|
|
|
protected:
|
|
void RetriveData();
|
|
virtual void Uninitialize();
|
|
|
|
private:
|
|
DXGI_SWAP_CHAIN_DESC m_SwapChainDescription;
|
|
IDXGISwapChain* m_SwapChain;
|
|
bool m_VSync;
|
|
};
|