Updates
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
#include <sophia/application.hpp>
|
||||
#include <sophia/canvas.hpp>
|
||||
|
||||
namespace sophia {
|
||||
|
||||
class Canvas::Impl {
|
||||
public:
|
||||
explicit Impl(Application* application) : application{application} {}
|
||||
|
||||
void triangle(glm::vec2 a, glm::vec2 b, glm::vec2 c,
|
||||
glm::vec3 color = {1.0f, 1.0f, 1.0f}) {
|
||||
std::vector<CanvasVertex> vertices{
|
||||
{a, color},
|
||||
{b, color},
|
||||
{c, color},
|
||||
};
|
||||
|
||||
application->pushModel(std::move(vertices), {});
|
||||
}
|
||||
|
||||
void quad(glm::vec2 position, glm::vec2 size,
|
||||
glm::vec3 color = {1.0f, 1.0f, 1.0f}) {
|
||||
std::vector<CanvasVertex> vertices{
|
||||
{position, color},
|
||||
{position + glm::vec2(size.x, 0.f), color},
|
||||
{position + size, color},
|
||||
{position + glm::vec2(0.f, size.y), color},
|
||||
};
|
||||
std::vector<u32> indices{0, 1, 2, 2, 3, 0};
|
||||
|
||||
application->pushModel(std::move(vertices), std::move(indices));
|
||||
}
|
||||
|
||||
void clear() { application->clearModels(); }
|
||||
|
||||
private:
|
||||
Application* application;
|
||||
};
|
||||
|
||||
Canvas::Canvas(Application* application)
|
||||
: impl{std::make_unique<Impl>(application)} {}
|
||||
|
||||
Canvas::~Canvas() = default;
|
||||
|
||||
void Canvas::triangle(glm::vec2 a, glm::vec2 b, glm::vec2 c, glm::vec3 color) {
|
||||
impl->triangle(a, b, c, color);
|
||||
}
|
||||
|
||||
void Canvas::quad(glm::vec2 position, glm::vec2 size, glm::vec3 color) {
|
||||
impl->quad(position, size, color);
|
||||
}
|
||||
|
||||
void Canvas::clear() { impl->clear(); }
|
||||
|
||||
} // namespace sophia
|
||||
Reference in New Issue
Block a user