diff options
| author | vimene <vincent.menegaux@gmail.com> | 2026-01-17 00:06:31 +0100 |
|---|---|---|
| committer | vimene <vincent.menegaux@gmail.com> | 2026-01-17 00:06:31 +0100 |
| commit | 0d10b77f77459333c5549711334f417623ab1f3e (patch) | |
| tree | 6584ab5d09fa72c93a70ac916bfdf401c7617157 /src/renderer.hpp | |
| parent | 175c71637b6bea6dcdd0faf3d614339983809bb1 (diff) | |
| download | engine-0d10b77f77459333c5549711334f417623ab1f3e.tar.gz | |
improved software shaders
- unified terminal and graphical software renderer shaders
- added vertex shaders for software renderers
- removed VertexData
- moved shaders from frame buffers to their own class
- added FrameBufferConcept and ShadersConcept
Diffstat (limited to 'src/renderer.hpp')
| -rw-r--r-- | src/renderer.hpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/renderer.hpp b/src/renderer.hpp index 6725f70..3880d04 100644 --- a/src/renderer.hpp +++ b/src/renderer.hpp @@ -2,22 +2,29 @@ #define RENDERER_HPP #include <memory> +#include <type_traits> #include "math/vector.hpp" #include "o3d/tri.hpp" #include "o3d/tri_deriv.hpp" +#include "o3d/mesh.hpp" +#include "fb/fb.hpp" +#include "shaders/shaders.hpp" namespace engine { -template<typename FrameBuffer> -class Renderer { +template<fb::FrameBufferConcept FrameBuffer, shaders::ShadersConcept Shaders> +class Renderer +{ public: FrameBuffer fb; + Shaders shaders; - Renderer(FrameBuffer&& fb); + Renderer(FrameBuffer&& fb, Shaders&& shaders); void resize(unsigned int w, unsigned int h); void clear(); void draw_triangle(const o3d::Triangle& triangle); + void draw_mesh(const o3d::Mesh& mesh); constexpr unsigned int width() const & { return fb.width(); |
