text: #pragma once
  #include "AdapterReader.h"
  #include "Shaders.h"
  #include "Vertex.h"
  #include <SpriteBatch.h>
  #include <SpriteFont.h>
  #include <WICTextureLoader.h>
  #include "VertexBuffer.h"
  #include "IndexBuffer.h"
  #include "ConstantBuffer.h"
  #include "GraphicsCapture.h"
  #include "..\\ScreenCoordinateBox.h"
  #include <winrt/Windows.Graphics.Capture.h>
  #include <windows.graphics.capture.interop.h>
  #include <windows.graphics.capture.h>
  #include "..\\Timer.h"
  #include "Camera.h"
  #include "GraphicsCaptureManager.h"
  
  class Graphics
  {
  public:
  	bool Initialize(HWND hwnd, int width, int height, winrt::Windows::Graphics::Capture::GraphicsCapturePicker capturePicker);
  	void RenderFrame();
  	std::shared_ptr<GraphicsCaptureManager> captureManager;
  	Camera camera;
  
  private:
  	bool InitializeDirectX(HWND hwnd, int width, int height);
  	bool InitializeShaders();
  	bool InitializeScene();
  
  	winrt::com_ptr<ID3D11Device> device;
  	winrt::com_ptr<ID3D11DeviceContext> deviceContext;
  	winrt::com_ptr<IDXGISwapChain> swapchain;
  	winrt::com_ptr<ID3D11RenderTargetView> renderTargetView;
  
  	VertexShader vertexshader;
  	PixelShader pixelshader;
  	ConstantBuffer<CB_VS_vertexshader> cb_vs_vertexshader;
  
  	winrt::com_ptr<ID3D11DepthStencilView> depthStencilView;
  	winrt::com_ptr<ID3D11Texture2D> depthStencilBuffer;
  	winrt::com_ptr<ID3D11DepthStencilState> depthStencilState;
  
  	winrt::com_ptr<ID3D11RasterizerState> rasterizerState;
  
  	std::unique_ptr<DirectX::SpriteBatch> spriteBatch;
  	std::unique_ptr<DirectX::SpriteFont> spriteFont;
  
  	winrt::com_ptr<ID3D11SamplerState> samplerState;
  	winrt::com_ptr<ID3D11ShaderResourceView> myTexture;
  
  	winrt::Windows::Graphics::Capture::GraphicsCapturePicker m_capturePicker{ nullptr };
  	Timer fpsTimer;
  
  	int windowWidth = 0;
  	int windowHeight = 0;
  
  };