#pragma once
#include "Direct3DBase.h"
#include <d3d11.h>
struct ModelViewProjectionConstantBuffer
{
DirectX::XMFLOAT4X4 model;
DirectX::XMFLOAT4X4 view;
DirectX::XMFLOAT4X4 projection;
};
struct Vertex
{
Vertex(){}
Vertex(float x, float y, float z,
float u, float v)
: pos(x,y,z), texCoord(u, v){}
DirectX::XMFLOAT3 pos;
DirectX::XMFLOAT2 texCoord;
};
ref class QuadRenderer sealed : public Direct3DBase
{
public:
QuadRenderer();
void Update(float timeTotal = 0.0f, float timeDelta = 0.0f);
void CreateTextureFromByte(byte * buffer,int width,int height);
virtual void CreateDeviceResources() override;
virtual void CreateWindowSizeDependentResources() override;
virtual void Render() override;
private:
void Render(Microsoft::WRL::ComPtr<ID3D11RenderTargetView> renderTargetView, Microsoft::WRL::ComPtr<ID3D11DepthStencilView> depthStencilView);
bool m_loadingComplete;
uint32 m_indexCount;
ModelViewProjectionConstantBuffer m_constantBufferData;
Microsoft::WRL::ComPtr<ID3D11InputLayout> m_inputLayout;
Microsoft::WRL::ComPtr<ID3D11Buffer> m_vertexBuffer;
Microsoft::WRL::ComPtr<ID3D11Buffer> m_indexBuffer;
Microsoft::WRL::ComPtr<ID3D11VertexShader> m_vertexShader;
Microsoft::WRL::ComPtr<ID3D11PixelShader> m_pixelShader;
Microsoft::WRL::ComPtr<ID3D11Buffer> m_constantBuffer;
Microsoft::WRL::ComPtr<ID3D11Texture2D> m_Texture;
Microsoft::WRL::ComPtr<ID3D11ShaderResourceView> m_SRV;
Microsoft::WRL::ComPtr<ID3D11SamplerState> m_QuadsTexSamplerState;
Microsoft::WRL::ComPtr<ID3D11BlendState> m_Transparency;
Microsoft::WRL::ComPtr<ID3D11RasterizerState> CCWcullMode;
Microsoft::WRL::ComPtr<ID3D11RasterizerState> CWcullMode;
};