#include #include #include #include #include #include #include #include #include #include struct Delegate { Delegate() {} void draw() { mgl::Rectangle rect(window->get_cursor_position().to_vec2f(), { 100.0f, 500.0f }); rect.set_color({255, 0, 0, 255}); window->draw(rect); mgl::Sprite sprite(*texture, { 100.0f - 10.0f, 0.0f }); sprite.set_color({255, 255, 255, 128}); window->draw(sprite); mgl::Text text("hello world!\nGood bye world!", { 0.0f, 0.0f }, *font); window->draw(text); vertex_buffer->set_position({ window->get_cursor_position().x + 100, window->get_cursor_position().y }); window->draw(*vertex_buffer); } mgl::Window *window; mgl::Texture *texture; mgl::Font *font; mgl::VertexBuffer *vertex_buffer; }; int main(int argc, char **argv) { mgl::Init init; mgl::Window window; if(!window.create("mglpp", 1920, 1080)) return 1; mgl::Texture texture; if(!texture.load_from_file("depends/mgl/tests/X11.png")) return 1; mgl::Font font; if(!font.load_from_file("/usr/share/fonts/noto/NotoSans-Regular.ttf", 32)) return 1; mgl::Vertex vertices[4] = { { {0.0f, 0.0f}, {255, 0, 0, 100}, {0.0f, 0.0f} }, { {texture.get_size().x, 0.0f}, {0, 255, 0, 100}, {1.0f, 0.0f} }, { {texture.get_size().x, texture.get_size().y}, {0, 0, 255, 100}, {1.0f, 1.0f} }, { {0.0f, texture.get_size().y}, {255, 0, 255, 100}, {0.0f, 1.0f} } }; mgl::VertexBuffer vertex_buffer(mgl::VertexBuffer::Quads, mgl::VertexBuffer::Static); if(!vertex_buffer.update(vertices, 4)) return 1; vertex_buffer.set_texture(&texture); Delegate delegate; delegate.window = &window; delegate.texture = &texture; delegate.font = &font; delegate.vertex_buffer = &vertex_buffer; mgl::Event event; while(true) { if(window.poll_event(event)) { } window.clear(mgl::Color(0, 0, 0, 255)); delegate.draw(); window.display(); } return 0; }