diff options
| author | realtradam <[email protected]> | 2023-06-23 02:47:55 -0400 |
|---|---|---|
| committer | realtradam <[email protected]> | 2023-06-23 02:47:55 -0400 |
| commit | f26149d554a6c473ec51b8c8f59af12f1bedea84 (patch) | |
| tree | 07c8464fd179504276bea3e4103b4ad79ef6fcfa /src/rmlui/irodeo_rmlui.hpp | |
| parent | 5f57ca96bb0702be7a6b518626ad1d300e5d92e6 (diff) | |
| download | RodeoKit-f26149d554a6c473ec51b8c8f59af12f1bedea84.tar.gz RodeoKit-f26149d554a6c473ec51b8c8f59af12f1bedea84.zip | |
progress on implementing render interface
Diffstat (limited to 'src/rmlui/irodeo_rmlui.hpp')
| -rw-r--r-- | src/rmlui/irodeo_rmlui.hpp | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/rmlui/irodeo_rmlui.hpp b/src/rmlui/irodeo_rmlui.hpp new file mode 100644 index 0000000..66573b0 --- /dev/null +++ b/src/rmlui/irodeo_rmlui.hpp @@ -0,0 +1,66 @@ +#pragma once + +#define RMLUI_STATIC_LIB + +// -- external -- +#include <RmlUi/Core/RenderInterface.h> +#include <RmlUi/Core/Types.h> + +class RenderInterface_Rodeo : public Rml::RenderInterface { + public: + + bool is_projecting = false; + + RenderInterface_Rodeo(); + ~RenderInterface_Rodeo(); + + // The viewport should be updated whenever the window size changes. + void SetViewport(int viewport_width, int viewport_height); + + // Sets up OpenGL states for taking rendering commands from RmlUi. + void BeginFrame(); + void EndFrame(); + + // -- Inherited from Rml::RenderInterface -- + + void RenderGeometry( + Rml::Vertex* vertices, + int num_vertices, + int* indices, + int num_indices, + Rml::TextureHandle texture, + const Rml::Vector2f& translation + ) override; + + void EnableScissorRegion(bool enable) override; + void SetScissorRegion(int x, int y, int width, int height) override; + + bool LoadTexture( + Rml::TextureHandle& texture_handle, + Rml::Vector2i& texture_dimensions, + const Rml::String& source + ) override; + bool GenerateTexture( + Rml::TextureHandle& texture_handle, + const Rml::byte* source, + const Rml::Vector2i& source_dimensions + ) override; + void ReleaseTexture(Rml::TextureHandle texture_handle) override; + + void SetTransform(const Rml::Matrix4f* transform) override; + + // Can be passed to RenderGeometry() to enable texture rendering without changing the bound texture. + static const Rml::TextureHandle TextureEnableWithoutBinding = Rml::TextureHandle(-1); + + private: + //Rml::Matrix4f transform, projection; + //ProgramId transform_dirty_state = ProgramId::All; + //bool transform_active = false; + + //enum class ScissoringState { Disable, Scissor, Stencil }; + //ScissoringState scissoring_state = ScissoringState::Disable; + + int viewport_width = 0; + int viewport_height = 0; + +}; |
