aboutsummaryrefslogtreecommitdiff
path: root/src/renderer.h
diff options
context:
space:
mode:
authorvimene <vincent.menegaux@gmail.com>2024-12-31 03:40:14 +0100
committervimene <vincent.menegaux@gmail.com>2024-12-31 03:40:14 +0100
commitcc6fb8c33637566a7b116d46440e6063f016deea (patch)
tree5cc83f84525507994add57df7dd974e6611d675a /src/renderer.h
parent6b765a85cf81bf4b7162e4c9280dd4054581c611 (diff)
downloadengine-cc6fb8c33637566a7b116d46440e6063f016deea.tar.gz
various improvements
- added quaternions and rewrote all rotations to use them - added transforms to put all object transforms in a single place - added Wavefront .obj file parser - removed frame buffer's abstract class - improved vectors, matrices, triangles, vertices and vertices data by putting all code in header file - added vector's operations - changed from NULL to nullptr - miscellaneous improvements
Diffstat (limited to 'src/renderer.h')
-rw-r--r--src/renderer.h23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/renderer.h b/src/renderer.h
index 457099d..b7a3a7e 100644
--- a/src/renderer.h
+++ b/src/renderer.h
@@ -2,22 +2,33 @@
#define RENDERER_H
#include <memory>
-#include "fb/fb.h"
+#include "math/vector.h"
#include "o3d/tri.h"
#include "o3d/tri_deriv.h"
namespace engine {
+using math::Vector3, o3d::Triangle;
+
+template<typename FrameBuffer>
class Renderer {
public:
- std::unique_ptr<fb::FrameBuffer> fb;
+ FrameBuffer fb;
+
+ template<typename FBArg>
+ Renderer(FBArg&& fb);
- Renderer(std::unique_ptr<fb::FrameBuffer> fb);
void resize(unsigned int w, unsigned int h);
- unsigned int width() const;
- unsigned int height() const;
void clear();
- void draw_triangle(o3d::Triangle triangle);
+ void draw_triangle(const Triangle& triangle);
+
+ constexpr unsigned int width() const & {
+ return fb.width();
+ }
+
+ constexpr unsigned int height() const & {
+ return fb.height();
+ }
private:
std::vector<float> depth_buf;