/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* graphics.inl :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/04/02 15:13:55 by maldavid #+# #+# */ /* Updated: 2023/04/02 15:26:16 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #include "renderer/images/texture.h" #include #include namespace mlx { int& GraphicsSupport::getID() noexcept { return _id; } std::shared_ptr GraphicsSupport::getWindow() { return _window; } void GraphicsSupport::beginRender() noexcept { if(!_renderer->beginFrame()) return; _proj = glm::ortho(0, _window->getWidth(), 0, _window->getHeight()); _renderer->getUniformBuffer()->setData(sizeof(_proj), &_proj); } void GraphicsSupport::clearRenderData() noexcept { _textures_to_render.clear(); _pixel_put_pipeline.clear(); _text_put_pipeline->clear(); } void GraphicsSupport::pixelPut(int x, int y, uint32_t color) noexcept { _pixel_put_pipeline.setPixel(x, y, color); } void GraphicsSupport::stringPut(int x, int y, int color, std::string str) { _text_put_pipeline->put(x, y, color, str); } void GraphicsSupport::texturePut(Texture* texture, int x, int y) { _textures_to_render.emplace_back(texture, x, y); std::size_t hash = std::hash{}(_textures_to_render.back()); _textures_to_render.back().hash = hash; auto it = std::find_if(_textures_to_render.begin(), _textures_to_render.end() - 1, [=](const TextureRenderData& rhs) { return rhs.hash == hash; }); if(it != _textures_to_render.end() - 1) _textures_to_render.erase(it); } void GraphicsSupport::loadFont(const std::filesystem::path& filepath, float scale) { _text_put_pipeline->loadFont(filepath, scale); } }