snes9x/win32/CVulkan.h

35 lines
1.0 KiB
C
Raw Normal View History

2023-01-31 00:54:23 +01:00
#pragma once
#include "IS9xDisplayOutput.h"
2023-02-01 00:18:07 +01:00
#include "../vulkan/vulkan_context.hpp"
2023-02-01 00:38:02 +01:00
#include "../vulkan/vulkan_shader_chain.hpp"
2023-02-10 23:03:05 +01:00
#include "../vulkan/vulkan_simple_output.hpp"
2023-02-01 21:47:42 +01:00
#include <functional>
2023-01-31 00:54:23 +01:00
class CVulkan : public IS9xDisplayOutput
{
private:
HWND hWnd;
std::unique_ptr<Vulkan::Context> context;
2023-02-01 00:18:07 +01:00
std::vector<uint16_t> filtered_image;
2023-02-01 00:38:02 +01:00
std::unique_ptr<Vulkan::ShaderChain> shaderchain;
2023-02-01 21:47:42 +01:00
std::string current_shadername;
2023-02-10 23:03:05 +01:00
std::unique_ptr<Vulkan::SimpleOutput> simple_output;
2023-01-31 00:54:23 +01:00
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<dMode>* modeVector);
2023-02-01 21:47:42 +01:00
std::vector<SlangShader::Parameter> *GetShaderParameters(void);
std::function<void(const char *)> GetShaderParametersSaveFunction();
2023-01-31 00:54:23 +01:00
};