vulkanTutorial/VulkanTutorial.h

75 lines
1.7 KiB
C
Raw Normal View History

2024-02-18 23:22:05 +08:00
// VulkanTutorial.h: 标准系统包含文件的包含文件
// 或项目特定的包含文件。
#pragma once
#define GLFW_INCLUDE_VULKAN
#include<GLFW/glfw3.h>
2024-02-20 22:04:01 +08:00
#include<vulkan/vulkan.h>
2024-02-18 23:22:05 +08:00
#include <iostream>
#include <stdexcept>
#include <functional>
#include <cstdlib>
2024-02-20 22:04:01 +08:00
VkResult CreateDebugUtilsMessengerEXT(VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,const VkAllocationCallbacks* pAllocator,VkDebugUtilsMessengerEXT* pDebugMessenger);
void DestroyDebugUtilsMessengerEXT(VkInstance instance,VkDebugUtilsMessengerEXT debugMessenger,const VkAllocationCallbacks* pAllocator);
2024-02-18 23:22:05 +08:00
class HelloTriangleApplication
{
public:
HelloTriangleApplication();
~HelloTriangleApplication();
void run(int Width, int Height) {
GLFWwindow* window = initWindow(Width,Height);
initVulkan();
mainLoop(window);
cleanup(window);
}
private:
2024-02-19 16:30:49 +08:00
2024-02-20 22:04:01 +08:00
GLFWwindow* window;
2024-02-19 16:30:49 +08:00
VkInstance instance;
2024-02-20 22:04:01 +08:00
VkDebugUtilsMessengerEXT debugMessenger;
2024-02-18 23:22:05 +08:00
GLFWwindow* initWindow(int Width, int Height);
2024-02-19 16:30:49 +08:00
void createInstance();
void initVulkan();
2024-02-18 23:22:05 +08:00
void mainLoop(GLFWwindow* window);
void cleanup(GLFWwindow* window);
2024-02-20 22:04:01 +08:00
bool checkValidationLayerSupport();
std::vector<const char*> getRequiredExtensions();
static VKAPI_ATTR VkBool32 VKAPI_CALL debugCallback(
VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
VkDebugUtilsMessageTypeFlagsEXT messageTypes,
const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData,
void* pUserData);
void setupDebugMessenger();
void populateDebugMessengerCreateInfo(VkDebugUtilsMessengerCreateInfoEXT& createInfo);
2024-02-18 23:22:05 +08:00
};
HelloTriangleApplication::HelloTriangleApplication()
{
}
HelloTriangleApplication::~HelloTriangleApplication()
{
}