2024-02-21 13:28:50 +08:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "hk_device.hpp"
|
|
|
|
#include "hk_pipeline.hpp"
|
|
|
|
#include "hk_swap_chain.hpp"
|
|
|
|
#include "hk_window.hpp"
|
|
|
|
#include "hk_model.hpp"
|
|
|
|
|
|
|
|
// std
|
|
|
|
#include <memory>
|
|
|
|
#include <vector>
|
|
|
|
|
|
|
|
namespace hk
|
|
|
|
{
|
|
|
|
class FirstApp
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
static constexpr int WIDTH = 800;
|
|
|
|
static constexpr int HEIGHT = 600;
|
|
|
|
|
|
|
|
FirstApp();
|
|
|
|
~FirstApp();
|
|
|
|
|
|
|
|
FirstApp(const FirstApp &) = delete;
|
|
|
|
FirstApp &operator=(const FirstApp &) = delete;
|
|
|
|
|
|
|
|
void run();
|
|
|
|
|
|
|
|
private:
|
|
|
|
void loadModels();
|
|
|
|
void createPipelineLayout();
|
|
|
|
void createPipeline();
|
|
|
|
void createCommandBuffers();
|
|
|
|
void drawFrame();
|
2024-02-21 15:42:32 +08:00
|
|
|
void recreateSwapChain();
|
|
|
|
void recordCommandBuffer(int imageIndex);
|
2024-02-21 13:28:50 +08:00
|
|
|
|
|
|
|
Window window{WIDTH, HEIGHT, "Hello Vulkan!"};
|
|
|
|
Device device{window};
|
2024-02-21 15:42:32 +08:00
|
|
|
std::unique_ptr<SwapChain> swapChain;
|
2024-02-21 13:28:50 +08:00
|
|
|
std::unique_ptr<Pipeline> pipeline;
|
|
|
|
VkPipelineLayout pipelineLayout;
|
|
|
|
std::vector<VkCommandBuffer> commandBuffers;
|
|
|
|
std::unique_ptr<Model> model;
|
|
|
|
};
|
|
|
|
}
|