renderer structure
This commit is contained in:
6
src/Rendering/mesh.cpp
Normal file
6
src/Rendering/mesh.cpp
Normal file
@@ -0,0 +1,6 @@
|
||||
#include "mesh.hpp"
|
||||
|
||||
Mesh::Mesh()
|
||||
{
|
||||
|
||||
}
|
||||
23
src/Rendering/mesh.hpp
Normal file
23
src/Rendering/mesh.hpp
Normal file
@@ -0,0 +1,23 @@
|
||||
#ifndef MINECRAFT_RENDERING_MESH_H_
|
||||
#define MINECRAFT_RENDERING_MESH_H_
|
||||
|
||||
class Vertex
|
||||
{
|
||||
public:
|
||||
glm::vec3 Position;
|
||||
glm::vec3 SurfaceNormal;
|
||||
|
||||
};
|
||||
|
||||
class Mesh
|
||||
{
|
||||
public:
|
||||
|
||||
Mesh();
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
66
src/Rendering/renderable.cpp
Normal file
66
src/Rendering/renderable.cpp
Normal file
@@ -0,0 +1,66 @@
|
||||
#include "renderable.hpp"
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
Renderable::Renderable()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Renderable::Init()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Renderable::AddMesh( Mesh* mesh )
|
||||
{
|
||||
if (mesh == nullptr) return;
|
||||
mMeshs.push_back( mesh );
|
||||
}
|
||||
|
||||
void Renderable::RemoveMesh( Mesh* mesh )
|
||||
{
|
||||
// Renderable does not include mesh
|
||||
if (std::find( mMeshs.begin(), mMeshs.end(), mesh ) == mMeshs.end())
|
||||
return;
|
||||
|
||||
std::remove( mMeshs.begin(), mMeshs.end(), mesh );
|
||||
|
||||
}
|
||||
|
||||
void Renderable::SetActiveMesh( Mesh* mesh )
|
||||
{
|
||||
// Renderable does not include mesh
|
||||
if (std::find( mMeshs.begin(), mMeshs.end(), mesh ) == mMeshs.end())
|
||||
return;
|
||||
|
||||
mActiveMesh = mesh;
|
||||
}
|
||||
|
||||
Mesh* Renderable::GetActiveMesh()
|
||||
{
|
||||
return mActiveMesh;
|
||||
}
|
||||
|
||||
void Renderable::UpdateBuffer()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Renderable::Load()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Renderable::Unload()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
Renderable::~Renderable()
|
||||
{
|
||||
Unload();
|
||||
}
|
||||
|
||||
|
||||
|
||||
47
src/Rendering/renderable.hpp
Normal file
47
src/Rendering/renderable.hpp
Normal file
@@ -0,0 +1,47 @@
|
||||
#ifndef MINECRAFT_RENDERING_RENDERABLE_H_
|
||||
#define MINECRAFT_RENDERING_RENDERABLE_H_
|
||||
|
||||
#include "../common.hpp"
|
||||
|
||||
class Mesh;
|
||||
|
||||
// Basically a model but thats effort
|
||||
// perhaps sub-class?
|
||||
class Renderable
|
||||
{
|
||||
public:
|
||||
Renderable();
|
||||
|
||||
void Init();
|
||||
|
||||
// DOES NOT OWN MESH
|
||||
void AddMesh( Mesh* );
|
||||
void RemoveMesh( Mesh* );
|
||||
void SetActiveMesh( Mesh* );
|
||||
Mesh* GetActiveMesh();
|
||||
|
||||
void UpdateBuffer();
|
||||
|
||||
// GPU Load methods
|
||||
void Load();
|
||||
void Unload();
|
||||
|
||||
~Renderable();
|
||||
|
||||
private:
|
||||
|
||||
std::vector<glm::vec3> mBuff;
|
||||
|
||||
std::vector<Mesh*> mMeshs;
|
||||
Mesh* mActiveMesh;
|
||||
|
||||
GLuint mActiveVAO;
|
||||
GLuint mActiveVBO;
|
||||
// Meshes have uniform uniforms
|
||||
GLuint mUBO;
|
||||
|
||||
glm::mat4 mModelMatrix;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
11
src/Rendering/rendermaster.cpp
Normal file
11
src/Rendering/rendermaster.cpp
Normal file
@@ -0,0 +1,11 @@
|
||||
#include "rendermaster.hpp"
|
||||
|
||||
RenderMaster::RenderMaster()
|
||||
: mWorldRenderer(),
|
||||
mMeshRenderer()
|
||||
{
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
40
src/Rendering/rendermaster.hpp
Normal file
40
src/Rendering/rendermaster.hpp
Normal file
@@ -0,0 +1,40 @@
|
||||
#ifndef MINECRAFT_RENDERING_RENDERMASTER_H_
|
||||
#define MINECRAFT_RENDERING_RENDERMASTER_H_
|
||||
|
||||
/**
|
||||
* Renderer Structure
|
||||
*
|
||||
* Mesh -> Renderable
|
||||
* Renderable -> Model
|
||||
* Renderable -> World (static(?))
|
||||
* Renderable -> Entity (dynamic)
|
||||
* Renderable -> Particle (dynamic)
|
||||
*
|
||||
* Kinda just winging it ngl
|
||||
*/
|
||||
|
||||
class WorldRenderer
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
|
||||
class MeshRenderer
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
|
||||
class RenderMaster
|
||||
{
|
||||
public:
|
||||
RenderMaster();
|
||||
|
||||
|
||||
WorldRenderer mWorldRenderer;
|
||||
MeshRenderer mMeshRenderer;
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user