#pragma once #include "Direct3DBase.h" #include #include struct ModelViewProjectionConstantBuffer { DirectX::XMFLOAT4X4 model; DirectX::XMFLOAT4X4 view; DirectX::XMFLOAT4X4 projection; }; struct Vertex //Overloaded Vertex Structure { 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; }; // This class renders a simple spinning cube. ref class CubeRenderer sealed : public Direct3DBase { public: CubeRenderer(); // Direct3DBase methods. virtual void CreateDeviceResources() override; virtual void CreateWindowSizeDependentResources() override; virtual void Render() override; // Method for updating time-dependent objects. void Update(float timeTotal, float timeDelta); void CreateTextureFromByte(byte * buffer,int width,int height); private: void Render(Microsoft::WRL::ComPtr renderTargetView, Microsoft::WRL::ComPtr depthStencilView); bool m_loadingComplete; Microsoft::WRL::ComPtr m_inputLayout; Microsoft::WRL::ComPtr m_vertexBuffer; Microsoft::WRL::ComPtr m_indexBuffer; Microsoft::WRL::ComPtr m_vertexShader; Microsoft::WRL::ComPtr m_pixelShader; Microsoft::WRL::ComPtr m_constantBuffer; Microsoft::WRL::ComPtr m_texture; Microsoft::WRL::ComPtr m_SRV; Microsoft::WRL::ComPtr m_cubesTexSamplerState; uint32 m_indexCount; ModelViewProjectionConstantBuffer m_constantBufferData; std::mutex m_mutex; Microsoft::WRL::ComPtr m_transparency; Microsoft::WRL::ComPtr m_CCWcullMode; Microsoft::WRL::ComPtr m_CWcullMode; };