From cc6fb8c33637566a7b116d46440e6063f016deea Mon Sep 17 00:00:00 2001 From: vimene Date: Tue, 31 Dec 2024 03:40:14 +0100 Subject: 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 --- src/renderer.h | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) (limited to 'src/renderer.h') 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 -#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 class Renderer { public: - std::unique_ptr fb; + FrameBuffer fb; + + template + Renderer(FBArg&& fb); - Renderer(std::unique_ptr 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 depth_buf; -- cgit v1.2.3