#pragma once #include "IS9xDisplayOutput.h" #include "common/video/vulkan/vulkan_context.hpp" #include "common/video/vulkan/vulkan_shader_chain.hpp" #include "common/video/vulkan/vulkan_simple_output.hpp" #include class CVulkan : public IS9xDisplayOutput { private: HWND hWnd; std::unique_ptr context; std::vector filtered_image; std::unique_ptr shaderchain; std::string current_shadername; std::unique_ptr simple_output; vk::UniqueDescriptorPool imgui_descriptor_pool; int current_width; int current_height; public: bool InitImGui(); bool Initialize(HWND hWnd) override; void DeInitialize() override; void Render(SSurface Src) override; bool ChangeRenderSize(unsigned int newWidth, unsigned int newHeight) override; bool ApplyDisplayChanges(void) override; bool SetFullscreen(bool fullscreen) override; void SetSnes9xColorFormat() override; void EnumModes(std::vector* modeVector) override; std::vector *GetShaderParameters(void) override; std::function GetShaderParametersSaveFunction() override; };