#pragma once #include "VertexData.h" namespace Seele { class StaticMeshVertexData : public VertexData { public: StaticMeshVertexData(); virtual ~StaticMeshVertexData(); static StaticMeshVertexData* getInstance(); void loadPositions(MeshId id, const Array& data); void loadTexCoords(MeshId id, const Array& data); void loadNormals(MeshId id, const Array& data); void loadTangents(MeshId id, const Array& data); void loadBiTangents(MeshId id, const Array& data); virtual void init(Gfx::PGraphics graphics) override; virtual void bindBuffers(Gfx::PRenderCommand command) override; virtual Gfx::PDescriptorLayout getVertexDataLayout() override; virtual Gfx::PDescriptorSet getVertexDataSet() override; virtual std::string getTypeName() const override { return "StaticMeshVertexData"; } private: virtual void resizeBuffers() override; virtual void updateBuffers() override; Gfx::PShaderBuffer positions; Array positionData; Gfx::PShaderBuffer texCoords; Array texCoordsData; Gfx::PShaderBuffer normals; Array normalData; Gfx::PShaderBuffer tangents; Array tangentData; Gfx::PShaderBuffer biTangents; Array biTangentData; Gfx::PDescriptorLayout descriptorLayout; Gfx::PDescriptorSet descriptorSet; }; }