You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

57 lines
1.1 KiB

#pragma once
#include <GLFW/glfw3.h>
#include <iostream>
#include <vector>
#include <cstring>
#include <optional>
#include <set>
#include <fstream>
#include <numeric>
#include <chrono>
#include <array>
#include <memory>
#include <vulkan/vulkan_core.h>
class Instance;
class Swapchain;
class Pipeline;
class Buffer;
class CommandPool;
class Image;
class ComputePipeline;
class Fence;
class Semaphore;
class Application {
public:
explicit Application();
void mainLoop();
~Application();
protected:
Swapchain* swapchain = nullptr;
Pipeline* graphicsPipeline = nullptr;
Buffer* vertexBuffer = nullptr;
Buffer* indexBuffer = nullptr;
Buffer* uniformBuffer = nullptr;
ComputePipeline* computePipeline = nullptr;
void updateUniformBuffer();
void recordCommandBuffer(VkCommandBuffer commandBuffer, uint32_t imageIndex);
Semaphore* imageAvailable = nullptr;
Semaphore* renderFinished = nullptr;
Semaphore* computeFinished = nullptr;
Fence* renderInFlight = nullptr;
Fence* computeInFlight = nullptr;
void drawFrame();
virtual void recordDrawCommands() {};
virtual void recordComputeCommands() {}
void update();
void createSyncObjects();
};