3 #include "Mountain/core.hpp" 5 #include <magic_enum/magic_enum.hpp> 9 #include "Mountain/rendering/gpu_buffer.hpp" 10 #include "Mountain/rendering/gpu_vertex_array.hpp" 11 #include "Mountain/rendering/render_target.hpp" 17 #include "Mountain/utils/rectangle.hpp" 21 enum class DrawTextureFlipping : uint8_t
39 MOUNTAIN_API
static void Clear(
const Color& color);
146 MOUNTAIN_API
static void Texture(
150 float_t rotation = 0.f,
155 Meta::UnderlyingEnumType<DrawTextureFlipping> flipFlags =
static_cast<Meta::UnderlyingEnumType<DrawTextureFlipping>
>(DrawTextureFlipping::None)
164 MOUNTAIN_API
static void Text(
const Font& font,
const std::string& text,
Vector2 position, float_t scale = 1.f,
const Color& color =
Color::White());
180 float_t rotation = 0,
184 Meta::UnderlyingEnumType<DrawTextureFlipping> flipFlags =
static_cast<Meta::UnderlyingEnumType<DrawTextureFlipping>
>(DrawTextureFlipping::None)
190 MOUNTAIN_API
static void Flush();
205 struct LineColoredData
217 struct TriangleColoredData
244 float_t startingAngle;
253 Matrix transformation, uvProjection;
266 struct RenderTargetData
269 Matrix transformation, uvProjection;
274 enum class DrawDataType : uint8_t
282 TriangleColoredFilled,
319 void AddCommand(DrawDataType type);
332 static inline Pointer<Shader> m_TextureShader, m_TextShader, m_RenderTargetShader;
334 static inline Graphics::GpuBuffer m_RectangleEbo, m_Vbo, m_RectangleVbo, m_TextureVbo, m_TextVbo, m_RenderTargetVbo, m_RenderTargetSsbo;
335 static inline Graphics::GpuVertexArray m_PointVao, m_LineVao, m_LineColoredVao, m_TriangleVao, m_TriangleColoredVao, m_RectangleVao, m_CircleVao, m_ArcVao, m_TextureVao, m_TextVao, m_RenderTargetVao;
337 static inline Matrix m_ProjectionMatrix;
342 static inline DrawList m_DrawList;
344 static void Initialize();
345 static void LoadResources();
346 static void Shutdown();
348 static void InitializePointBuffers();
349 static void InitializeLineBuffers();
350 static void InitializeLineColoredBuffers();
351 static void InitializeTriangleBuffers();
352 static void InitializeTriangleColoredBuffers();
353 static void InitializeRectangleBuffers();
354 static void InitializeCircleBuffers();
355 static void InitializeArcBuffers();
356 static void InitializeTextureBuffers();
357 static void InitializeTextBuffers();
358 static void InitializeRenderTargetBuffers();
360 static void SetProjectionMatrix(
const Matrix& newProjectionMatrix);
361 static void SetCamera(
const Matrix& newCameraMatrix,
Vector2 newCameraScale);
362 static void UpdateShaderMatrices();
364 static void CircleInternal(
Vector2 center, float_t radius, bool_t filled,
Vector2 scale,
const Color& color);
365 static void ArcInternal(
Vector2 center, float_t radius, float_t startingAngle, float_t deltaAngle, bool_t filled,
Vector2 scale,
const Color& color);
367 static void RenderPointData(
const List<PointData>& points,
size_t index,
size_t count);
368 static void RenderLineData(
const List<LineData>& lines,
size_t index,
size_t count);
369 static void RenderLineColoredData(
const List<LineColoredData>& linesColored,
size_t index,
size_t count);
370 static void RenderTriangleData(
const List<TriangleData>& triangles, bool_t filled,
size_t index,
size_t count);
371 static void RenderTriangleColoredData(
const List<TriangleColoredData>& trianglesColored, bool_t filled,
size_t index,
size_t count);
372 static void RenderRectangleData(
const List<RectangleData>& rectangles, bool_t filled,
size_t index,
size_t count);
373 static void RenderCircleData(
const List<CircleData>& circles,
size_t index,
size_t count);
374 static void RenderArcData(
const List<ArcData>& arcs,
size_t index,
size_t count);
375 static void RenderTextureData(
const List<TextureData>& textures, uint32_t textureId,
size_t index,
size_t count);
376 static void RenderTextData(
const List<TextData>& texts,
size_t index,
size_t count);
377 static void RenderRenderTargetData(
const List<RenderTargetData>& renderTargets,
size_t index,
size_t count);
380 friend class RenderTarget;
385 ENUM_FLAGS(Mountain::DrawTextureFlipping)
Defines the Mountain::List class.
Defines the Mountain::Shader class.
static constexpr Vector2 Zero() noexcept
Defines multiple color structs.
Represents an image in memory.
Custom Mountain smart pointer. Represents both a std::shared_ptr and a std::weak_ptr.
Defines the Mountain::Texture class.
static constexpr Vector2 One() noexcept
static constexpr Color White()
Constant for White.
The Color struct represents a color in RGBA color space.
Low-level interface for OpenGL vertex arrays.
Holds the necessary information to draw text using a Font.
Low-level interface for OpenGL buffers.
The Draw class contains static functions to draw various things on screen.
static constexpr Matrix Identity() noexcept
Contains all declarations of the Mountain Framework.