#pragma once #include "..\Common\DeviceResources.h" #include "ShaderStructures.h" #include "..\Common\StepTimer.h" namespace CameraDirect_cpp { // This sample renderer instantiates a basic rendering pipeline. class Sample3DSceneRenderer { public: Sample3DSceneRenderer(const std::shared_ptr& deviceResources); void CreateDeviceDependentResources(); void CreateWindowSizeDependentResources(); void ReleaseDeviceDependentResources(); void Update(DX::StepTimer const& timer); void Render(); void StartTracking(); void TrackingUpdate(float positionX); void StopTracking(); bool IsTracking() { return m_tracking; } private: void Rotate(float radians); private: // Cached pointer to device resources. std::shared_ptr m_deviceResources; // Direct3D resources for cube geometry. 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; // System resources for cube geometry. ModelViewProjectionConstantBuffer m_constantBufferData; uint32 m_indexCount; // Variables used with the rendering loop. bool m_loadingComplete; float m_degreesPerSecond; bool m_tracking; }; }