From d5fbd2001b0ad3591a7f969dfd75c809ab55b40e Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Fri, 30 Jun 2023 04:34:10 +1000 Subject: RenderPrimitive micro-optimizations --- source/application/StarRenderer.hpp | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'source/application/StarRenderer.hpp') diff --git a/source/application/StarRenderer.hpp b/source/application/StarRenderer.hpp index e12590f..908f121 100644 --- a/source/application/StarRenderer.hpp +++ b/source/application/StarRenderer.hpp @@ -50,17 +50,35 @@ struct RenderVertex { float param1; }; -struct RenderTriangle { +class RenderTriangle { +public: + RenderTriangle() = default; + RenderTriangle(Vec2F posA, Vec2F posB, Vec2F posC, Vec4B color = Vec4B::filled(255), float param1 = 0.0f); + RenderTriangle(TexturePtr tex, Vec2F posA, Vec2F uvA, Vec2F posB, Vec2F uvB, Vec2F posC, Vec2F uvC, Vec4B color = Vec4B::filled(255), float param1 = 0.0f); + TexturePtr texture; RenderVertex a, b, c; }; -struct RenderQuad { +class RenderQuad { +public: + RenderQuad() = default; + RenderQuad(Vec2F posA, Vec2F posB, Vec2F posC, Vec2F posD, Vec4B color = Vec4B::filled(255), float param1 = 0.0f); + RenderQuad(TexturePtr tex, Vec2F minScreen, float textureScale = 1.0f, Vec4B color = Vec4B::filled(255), float param1 = 0.0f); + RenderQuad(TexturePtr tex, RectF const& screenCoords, Vec4B color = Vec4B::filled(255), float param1 = 0.0f); + RenderQuad(TexturePtr tex, Vec2F posA, Vec2F uvA, Vec2F posB, Vec2F uvB, Vec2F posC, Vec2F uvC, Vec2F posD, Vec2F uvD, Vec4B color = Vec4B::filled(255), float param1 = 0.0f); + RenderQuad(TexturePtr tex, RenderVertex vA, RenderVertex vB, RenderVertex vC, RenderVertex vD); + RenderQuad(RectF const& rect, Vec4B color = Vec4B::filled(255), float param1 = 0.0f); + TexturePtr texture; RenderVertex a, b, c, d; }; -struct RenderPoly { +class RenderPoly { +public: + RenderPoly() = default; + RenderPoly(List const& verts, Vec4B color, float param1 = 0.0f); + TexturePtr texture; List vertexes; }; @@ -100,7 +118,7 @@ public: // Transforms the given primitives into a form suitable for the underlying // graphics system and stores it for fast replaying. - virtual void set(List primitives) = 0; + virtual void set(List& primitives) = 0; }; typedef Variant RenderEffectParameter; @@ -136,6 +154,7 @@ public: virtual TextureGroupPtr createTextureGroup(TextureGroupSize size = TextureGroupSize::Medium, TextureFiltering filtering = TextureFiltering::Nearest) = 0; virtual RenderBufferPtr createRenderBuffer() = 0; + virtual List& immediatePrimitives() = 0; virtual void render(RenderPrimitive primitive) = 0; virtual void renderBuffer(RenderBufferPtr const& renderBuffer, Mat3F const& transformation = Mat3F::identity()) = 0; -- cgit v1.2.3