Im working on a project working wth visual studio 2013 and programming in c++. For some reason i do not understand i got an unknown identifier error while compiling my project. I have seached for 2 days now for an answer havent found anything that could get me in the right direction.
Error mesage: error C2061: syntax error : identifier 'Mesh'
.
Mesh header
#ifndef MESH_H
#define MESH_H
#include <GL/glew.h>
#include <glm/glm.hpp>
#include <vector>
#include "Renderer.h"
class Mesh
{
public:
GLuint GetVao();
GLuint GetVbo();
GLuint GetSize();
void AddVertex(const glm::vec3& position);
void SendData();
void Destroy();
private:
std::vector<GLfloat> verticies;
GLuint vao;
GLuint vbo;
GLuint size;
};
#endif
Mesh source
#include "Mesh.h"
void Mesh::AddVertex(const glm::vec3& position)
{
verticies.push_back(position.x);
verticies.push_back(position.y);
verticies.push_back(position.z);
}
void Mesh::Destroy()
{
glDeleteVertexArrays(1, &vao);
glDeleteBuffers(1, &vbo);
verticies.clear();
}
void Mesh::SendData()
{
if (vao == 0)
glGenVertexArrays(1, &vao);
if (vbo == 0)
glGenBuffers(1, &vbo);
glBindVertexArray(vao);
glBindBuffer(GL_VERTEX_ARRAY, vbo);
glBufferData(GL_VERTEX_ARRAY, 0, 0, GL_STATIC_DRAW);
glBufferData(GL_VERTEX_ARRAY, verticies.size() * sizeof(GLfloat), verticies.data(), GL_STATIC_DRAW);
glEnableVertexAttribArray(Renderer::GetInstance()->GetSceneShader()->GetPositionLocation());
glVertexAttribPointer(Renderer::GetInstance()->GetSceneShader()->GetPositionLocation(), 3, GL_FLOAT, false, 0, 0);
glBindVertexArray(0);
}
GLuint Mesh::GetVao()
{
return vao;
}
GLuint Mesh::GetVbo()
{
return vbo;
}
GLuint Mesh::GetSize()
{
return size;
}
The error comes from the Renderer header file.
Renderer head
#ifndef RENDERER_H
#define RENDERER_H
#include <GL/glew.h>
#include "SceneShader.h"
#include "Mesh.h"
class Renderer
{
public:
static Renderer* GetInstance()
{
static Renderer instance;
return &instance;
}
void Initialize();
void PreDraw();
void Destroy();
void DrawMesh(Mesh* mesh);
SceneShader* GetSceneShader();
protected:
virtual ~Renderer();
private:
Renderer();
SceneShader sceneShader;
};
#endif;
Renderer source:
#include "Renderer.h"
Renderer::Renderer()
{
}
Renderer::~Renderer()
{
Destroy();
}
void Renderer::Initialize()
{
glClearColor(0.5f, 0.5f, 1.0f, 1.0f);
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
glFrontFace(GL_CW);
sceneShader.Create();
sceneShader.Bind();
}
void Renderer::PreDraw()
{
glClear(GL_COLOR_BUFFER_BIT |GL_DEPTH_BUFFER_BIT);
}
void Renderer::Destroy()
{
sceneShader.Unbind();
sceneShader.Destroy();
}
SceneShader* Renderer::GetSceneShader()
{
return &sceneShader;
}
void Renderer::DrawMesh(Mesh* mesh)
{
glBindVertexArray(mesh->GetVao());
glDrawArrays(GL_TRIANGLES, 0, mesh->GetSize());
glBindVertexArray(0);
}