45 lines
850 B
C++

#pragma once
#include "GL/glew.h"
#include <GLFW/glfw3.h>
#include <vector>
#include "assimp\scene.h"
#include "assimp\mesh.h"
#include "../Loader.h"
#include "../ADrawable.h"
class Mesh : public ADrawable
{
public:
struct MeshEntry {
static enum BUFFERS {
VERTEX_BUFFER, TEXCOORD_BUFFER, NORMAL_BUFFER, INDEX_BUFFER
};
GLuint vao;
GLuint vbo[4];
unsigned int elementCount;
aiColor3D dcolor;
aiColor3D acolor;
aiColor3D scolor;
float shininessStrength;
MeshEntry(aiMesh *mesh, const aiScene* scene, Mesh * m);
~MeshEntry();
Mesh * parent;
void render();
};
public:
Mesh(const char *filename, ShaderProgram * sh);
~Mesh(void);
std::vector<MeshEntry*> meshEntries;
ShaderProgram * shader;
void draw(ShaderProgram *shader, glm::mat4x4 proj_matrix, glm::mat4x4 view_matrix);
DrawableType getType();
};