You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#pragma once
#include "ggl.h"
#include "vertexbuffer.h"
#include "shader.h"
#include <vector>
#include "Glm/glm.hpp"
#include "Glm/ext.hpp"
struct VertexIndex { int position; int texcoord; int normal; };
class Model { public: VertexBuffer* mVertexBuffer; Shader* mShader; public: glm::mat4 mModelMatrix; float *mLightViewMatrix, *mLightProjectionMatrix; Model(); void Init(const char *modelPath); void Draw(glm::mat4 &viewMatrix, glm::mat4 projectionMatrix, float x, float y, float z); void SetPosition(float x, float y, float z); void SetAmbientMaterial(float r, float g, float b, float a); void SetDiffuseMaterial(float r, float g, float b, float a); void SetSpecularMaterial(float r, float g, float b, float a); void SetTexture(const char*imagePath); private: unsigned char* fileContent = nullptr; std::vector<glm::float3> position; std::vector<glm::float3> texcoord; std::vector<glm::float3> normal; std::vector<VertexIndex> vertices; void parseModel(); void parseLine(const char* line); glm::float3 parseFloat(const char* line); VertexIndex parseVertexIndex(std::string pointStr); int addVertices(VertexIndex indexes); void parseTexcoord(const char* line); void parseNormal(const char* line); void parsePosition(const char* line); void parseFace(const char* line); void createVertexBuffer(); };
|