#pragma once #include "DirectXFramework.h" #include "DDSTextureLoader.h" #include "SharedMethods.h" #include "SceneNode.h" typedef struct SkyVertex { XMFLOAT3 Position; } SkyVertex; struct SCBUFFER { XMMATRIX completeTransformation; }; class SkyNode : public SceneNode { public: SkyNode(wstring name, wstring skyCubeTextureName, float skyRadius); ~SkyNode(); bool Initialise(void); void Render(void); void Shutdown(void); private: float _skyRadius; UINT _indicesCount; UINT _vertexCount; vector _skyDomeVerts; vector _indices; ComPtr _device; ComPtr _deviceContext; ComPtr _vertexBuffer; ComPtr _indexBuffer; ComPtr _vertexShaderByteCode = nullptr; ComPtr _pixelShaderByteCode = nullptr; ComPtr _vertexShader; ComPtr _pixelShader; ComPtr _layout; ComPtr _constantBuffer; ComPtr _defaultRasteriserState; ComPtr _noCullRasteriserState; ComPtr _stencilState; ComPtr _skyCubeTexture; wstring _skyCubeTextureName; void CreateSphere(float radius, size_t tessellation); void GenerateBuffers(); void BuildShaders(); void BuildVertexLayout(); void BuildConstantBuffer(); void BuildRendererStates(); void BuildDepthStencilState(); void LoadSkyboxTexture(); };