58 Mesh(std::shared_ptr<VertexBuffer> vertexBuffer, std::shared_ptr<IndexBuffer> indexBuffer,
const std::string& meshName =
"NoName",
59 MeshType mType = MeshType::Mesh);
60 Mesh(
const std::string& filePath);
62 virtual void ProcessMesh(aiMesh* meshToProcess);
72 static std::shared_ptr<Mesh>
ProcessTheRawMesh(aiMesh* meshToProcess,
const std::string& mName =
"NoName");
86 static void DealVertexIndexBufferData(
float*& vertexData, uint32_t& vertexDataSize, uint32_t*& indexData, uint32_t& indexDataLength,
89 void ProcessNode(aiNode* nodeToProcess,
const aiScene* theScene);
101 std::shared_ptr<VertexBuffer> GetVertexBuffer()
const {
return m_VertexBuffer; }
102 std::shared_ptr<IndexBuffer> GetIndexBuffer()
const {
return m_IndexBuffer; }
104 void SetVertexBuffer(std::shared_ptr<VertexBuffer> vBuffer) { m_VertexBuffer = vBuffer; }
105 void SetIndexBuffer(std::shared_ptr<IndexBuffer> iBuffer) { m_IndexBuffer = iBuffer; }
108 static float LayoutElementToAttributeValue(
unsigned int vertexNumber, uint32_t counter, aiMesh* meshToProcess,
const BufferElement& layoutElem);
109 static void InitializeAttributeDictionary();
112 std::shared_ptr<VertexBuffer> m_VertexBuffer;
113 std::shared_ptr<IndexBuffer> m_IndexBuffer;
115 std::string m_MeshName;
118 static std::shared_ptr<std::unordered_map<std::string, MeshAttribute>> m_NameToAttributeDictionary;
static void DealVertexIndexBufferData(float *&vertexData, uint32_t &vertexDataSize, uint32_t *&indexData, uint32_t &indexDataLength, aiMesh *meshToProcess, BufferLayout &buffLayout)
Routine for gauging the vertexbuffer data.
Definition Mesh.cpp:127