#pragma once #include "IS9xDisplayOutput.h" #include "../vulkan/vulkan_context.hpp" #include "../vulkan/vulkan_shader_chain.hpp" #include "../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; int current_width; int current_height; public: bool Initialize(HWND hWnd); void DeInitialize(); void Render(SSurface Src); bool ChangeRenderSize(unsigned int newWidth, unsigned int newHeight); bool ApplyDisplayChanges(void); bool SetFullscreen(bool fullscreen); void SetSnes9xColorFormat(); void EnumModes(std::vector* modeVector); std::vector *GetShaderParameters(void); std::function GetShaderParametersSaveFunction(); };