Non-skined mesh WIP

This commit is contained in:
Teejoon
2016-02-02 17:18:42 +01:00
parent 9573958a86
commit bb4a65a1db
5 changed files with 78 additions and 26 deletions
+3 -2
View File
@@ -16,8 +16,9 @@ public:
~Model();
const std::vector<RawModel::MaterialGroup>& MaterialGroups() const { return m_RawModel->MaterialGroups; }
const glm::mat4& Matrix() const { return m_RawModel->m_Matrix; }
const std::vector<RawModel::Vertex>& Vertices() const { return m_RawModel->m_Vertices; }
const RawModel::Vertex* Vertices() const { return m_RawModel->Vertices(); }
unsigned int NumberOfVertices() const { return m_RawModel->NumVertices(); }
bool isSkined() const { return m_RawModel->isSkined; }
GLuint VAO;
GLuint ElementBuffer;
RawModel* m_RawModel;
+31 -10
View File
@@ -33,17 +33,20 @@ protected:
public:
~RawModelCustom();
struct Vertex
{
glm::vec3 Position;
glm::vec3 Normal;
glm::vec3 Tangent;
glm::vec3 BiNormal;
glm::vec2 TextureCoords;
struct Vertex
{
glm::vec3 Position;
glm::vec3 Normal;
glm::vec3 Tangent;
glm::vec3 BiNormal;
glm::vec2 TextureCoords;
};
struct SkinedVertex : public Vertex {
glm::vec4 BoneIndices;
glm::vec4 BoneWeights;
};
struct MaterialGroup
{
float SpecularExponent;
@@ -64,15 +67,33 @@ public:
std::shared_ptr<::Texture> IncandescenceMap;
};
std::vector<MaterialGroup> MaterialGroups;
const Vertex* Vertices() const {
if (isSkined) {
return m_SkinedVertices.data();
} else {
return m_Vertices.data();
}
};
unsigned int NumVertices() const {
if (isSkined) {
return m_SkinedVertices.size();
} else {
return m_Vertices.size();
}
};
std::vector<MaterialGroup> MaterialGroups;
bool isSkined;
std::vector<Vertex> m_Vertices;
std::vector<unsigned int> m_Indices;
Skeleton* m_Skeleton = nullptr;
glm::mat4 m_Matrix;
private:
std::vector<Vertex> m_Vertices;
std::vector<SkinedVertex> m_SkinedVertices;
void ReadMeshFile(std::string filePath);
void ReadMeshFileHeader(unsigned int& offset, char* fileData, unsigned int& fileByteSize);