#include "LVK.h"
#include "minilog/minilog.h"
#include <memory>
#include <shared/HelpersGLFW.h>

int main(int argc, char *argv[]) {
  minilog::initialize(nullptr, {.threadNames = false});
  int width = 960;
  int height = 540;
  GLFWwindow *window = lvk::initWindow("Simple Example", width, height);
  std::unique_ptr<lvk::IContext> ctx =
      lvk::createVulkanContextWithSwapchain(window, width, height, {});

  while (!glfwWindowShouldClose(window)) {
    glfwPollEvents();
    glfwGetFramebufferSize(window, &width, &height);
    if (!width || !height)
      continue;
    lvk::ICommandBuffer &buf = ctx->acquireCommandBuffer();
    ctx->submit(buf, ctx->getCurrentSwapchainTexture());
  }
  ctx.reset();
  glfwDestroyWindow(window);
  glfwTerminate();
  return 0;
}
