1
#define GLFW_INCLUDE_VULKAN
#include <GLFW/glfw3.h>
#include <vector>
class Application{
public:
    void run();
private:
    struct QueueFamilyIndices;

    void initWindow();

    void initVulkan();
    void createInstance();
    void createMessenger();
    void populateDebugMessengerCreateInfo(VkDebugUtilsMessengerCreateInfoEXT& createInfo);
    static VKAPI_ATTR VkBool32 VKAPI_CALL debugCallback(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageType, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData, void* pUserData);
    bool checkValidationLayerSupport();
    std::vector<const char*> getRequiredExtensions();

    void pickPhysicalDevice();
    bool isDeviceSuitable(VkPhysicalDevice device);
    int rateSuitability(VkPhysicalDevice device);
    Application::QueueFamilyIndices findQueueFamilies(VkPhysicalDevice device);

    void mainLoop();

    void cleanUp();

    GLFWwindow* window;

    VkPhysicalDevice physical_device = VK_NULL_HANDLE;
    VkInstance instance;
    VkDebugUtilsMessengerEXT debug_messenger;

    const uint16_t WIDTH = 800;
    const uint16_t HEIGHT = 600;
};

For immediate assistance, please email our customer support: [email protected]

Download RAW File