renderer structure
This commit is contained in:
@@ -44,13 +44,15 @@ file(GLOB SourceFiles
|
|||||||
${SrcDIR}/*
|
${SrcDIR}/*
|
||||||
${SrcDIR}/ThirdParty/*
|
${SrcDIR}/ThirdParty/*
|
||||||
${SrcDIR}/Rendering/*
|
${SrcDIR}/Rendering/*
|
||||||
|
${SrcDIR}/Rendering/Platform/*
|
||||||
|
${SrcDIR}/World/*
|
||||||
)
|
)
|
||||||
|
|
||||||
add_executable(${executable} ${SourceFiles})
|
add_executable(${executable} ${SourceFiles})
|
||||||
|
|
||||||
set_target_properties(${executable} PROPERTIES
|
set_target_properties(${executable} PROPERTIES
|
||||||
CXX_STANDARD 17
|
CXX_STANDARD 20
|
||||||
CXX_EXTENSIONS OFF
|
CXX_EXTENSIONS ON
|
||||||
)
|
)
|
||||||
|
|
||||||
if (UNIX)
|
if (UNIX)
|
||||||
|
|||||||
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
|
||||||
10
src/main.cpp
10
src/main.cpp
@@ -13,7 +13,11 @@
|
|||||||
#include "display.hpp"
|
#include "display.hpp"
|
||||||
#include "settings.hpp"
|
#include "settings.hpp"
|
||||||
|
|
||||||
|
#include "Rendering/rendermaster.hpp"
|
||||||
#include "Rendering/texture.hpp"
|
#include "Rendering/texture.hpp"
|
||||||
|
#include "Rendering/camera.hpp"
|
||||||
|
#include "Rendering/mesh.hpp"
|
||||||
|
|
||||||
|
|
||||||
#define __DEBUG
|
#define __DEBUG
|
||||||
|
|
||||||
@@ -39,6 +43,9 @@ void Loop( Display* display )
|
|||||||
{
|
{
|
||||||
SDL_Event e;
|
SDL_Event e;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
while ( display->IsWindowOpen )
|
while ( display->IsWindowOpen )
|
||||||
{
|
{
|
||||||
display->PrepareFrame();
|
display->PrepareFrame();
|
||||||
@@ -49,6 +56,9 @@ void Loop( Display* display )
|
|||||||
// rendering here
|
// rendering here
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
display->NextFrame();
|
display->NextFrame();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user