ProtoTank/Engine/Graphics/3DRenderer.hpp

66 lines
1.8 KiB
C++

#pragma once
#include <memory>
#include <vector>
#include <SFML/Graphics/RenderTexture.hpp>
#include "Camera.hpp"
#include "../Utils/MeshHelper.hpp"
class MeshObjCube final {
public:
MeshObjCube() {
mMesh = {
// RIGHT
{0.5f, 0.5f, -0.5f}, {0.5f, -0.5f, 0.5f}, {0.5f, 0.5f, 0.5f},
{0.5f, 0.5f, -0.5f}, {0.5f, -0.5f, 0.5f}, {0.5f, -0.5f, -0.5f},
// FRONT
{0.5f, 0.5f, 0.5f}, {0.5f, -0.5f, 0.5f}, {-0.5f, -0.5f, 0.5f},
{0.5f, 0.5f, 0.5f}, {-0.5f, -0.5f, 0.5f}, {-0.5f, 0.5f, 0.5f},
// LEFT
{-0.5f, 0.5f, 0.5f}, {-0.5f, -0.5f, 0.5f}, {-0.5f, 0.5f, -0.5f},
{-0.5f, 0.5f, -0.5f}, {-0.5f, -0.5f, 0.5f}, {-0.5f, -0.5f, -0.5f},
// BACK
{0.5f, 0.5f, -0.5f}, {-0.5f, 0.5f, -0.5f}, {0.5f, -0.5f, -0.5f},
{-0.5f, 0.5f, -0.5f}, {-0.5f, -0.5f, -0.5f}, {0.5f, -0.5f, -0.5f},
// TOP
{-0.5f, 0.5f, -0.5f}, {0.5f, 0.5f, -0.5f}, {-0.5f, 0.5f, 0.5f},
{0.5f, 0.5f, -0.5f}, {0.5f, 0.5f, 0.5f}, {-0.5f, 0.5f, 0.5f},
// BOTTOM
{-0.5f, -0.5f, -0.5f}, {-0.5f, -0.5f, 0.5f}, {0.5f, -0.5f, 0.5f},
{0.5f, -0.5f, 0.5f}, {0.5f, -0.5f, -0.5f}, {-0.5f, -0.5f, -0.5f},
};
}
std::vector<MeshVertex> mMesh;
private:
};
class Graphic3DRenderer final {
public:
Graphic3DRenderer();
~Graphic3DRenderer();
Graphic3DRenderer(Graphic3DRenderer&&) = default;
Graphic3DRenderer& operator= (Graphic3DRenderer&&) = default;
Graphic3DRenderer(Graphic3DRenderer const&) = delete;
Graphic3DRenderer& operator= (Graphic3DRenderer const&) = delete;
void Draw(sf::RenderTexture& context);
private:
sf::RenderTexture mWorldRender; // This is used to create the scene
std::unique_ptr<Camera> mMainCamera;
MeshObjCube testObj;
};