Chapter 03

ベースコード

ベースコード

さっそくコードを書いていきます。まずはベースとなるコードを記述します。

#include "vkutils.hpp"

class Application
{
public:
    void run()
    {
        initWindow();
        initVulkan();
        mainLoop();
        cleanup();
    }

private:
    void initWindow()
    {
    }

    void initVulkan()
    {
    }

    void mainLoop()
    {
    }

    void cleanup()
    {
    }
};

int main()
{
    Application app;

    try {
        app.run();
    } catch (const std::exception& e) {
        std::cerr << e.what() << std::endl;
        return EXIT_FAILURE;
    }

    return EXIT_SUCCESS;
}

エラーなく実行できることを確認してください。

GLFWでウィンドウを出す

GLFWでウィンドウを出していきます。まずはウィンドウサイズをクラスの上で定義します。

const uint32_t WIDTH = 800;
const uint32_t HEIGHT = 600;

次にウィンドウのハンドルをクラス変数に追加します。

private:
    GLFWwindow* window;

initWindow()の中でウィンドウを作成しましょう。

void initWindow()
{
    glfwInit();

    glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
    glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE);

    window = glfwCreateWindow(WIDTH, HEIGHT, "Vulkan", nullptr, nullptr);
}

mainLoop() にループを追加します。

void mainLoop()
{
    while (!glfwWindowShouldClose(window)) {
        glfwPollEvents();
    }
}

cleanup()でGLFWを終了することを忘れないでください。

void cleanup()
{
    glfwDestroyWindow(window);
    glfwTerminate();
}

これで実行するとウィンドウが出るようになったはずです。

ベースとなるコードができました。次の章では Vulkan のセットアップを行っていきます。

ここまでのC++コード(00_base_code.cpp)