← index
libmx2/libmx/vk_example/main.cpp
Source: libmx2/libmx/vk_example/main.cpp
#include "vk.hpp"
#include "SDL.h"
#include "argz.hpp"


class ExampleWindow : public mx::VKWindow {
public:
    ExampleWindow(const std::string& path, int wx, int wy, bool full)
        : mx::VKWindow("-[ Vulkan Example / Sprite ]-", wx, wy, full) {
        setPath(path);
    }
    void initVulkan() override {
        mx::VKWindow::initVulkan();
        sprite = createSprite(util.path + "/data/logo.png",
                              util.path + "/data/sprite_vert.spv",
                              util.path + "/data/sprite_frag.spv");
    }
    void proc() override {
        if (!sprite) {
            return;
        }
        sprite->drawSpriteRect(0, 0, getWidth(), getHeight());
        printText("Hello World", 15, 15, {255, 255, 255, 255});
    }
    void event(SDL_Event& e) override {
        if (e.type == SDL_QUIT || (e.type == SDL_KEYDOWN && e.key.keysym.sym == SDLK_ESCAPE)) {
            quit();
        }
    }

private:
    mx::VKSprite* sprite = nullptr;
};

int main(int argc, char **argv) {
    Arguments args = proc_args(argc, argv);
    try {
        ExampleWindow window(args.path, args.width, args.height, args.fullscreen);
        window.initVulkan();
        window.loop();
        window.cleanup();
    } catch (mx::Exception &e) {
        SDL_Log("mx: Exception: %s\n", e.text().c_str());
        return EXIT_FAILURE;
    }
    return EXIT_SUCCESS;
}