Files
funnygame/public/igamewindow.h

44 lines
1.1 KiB
C++

#ifndef GAME_WINDOW_H
#define GAME_WINDOW_H
#include "tier2/iappsystem.h"
#include "tier0/platform.h"
#include "materialsystem/imaterialsystem.h"
enum EGraphicsAPI
{
GRAPHICS_API_METAL,
GRAPHICS_API_VULKAN,
};
abstract_class IGameWindow: public IAppSystem
{
public:
virtual void UpdateWindow() = 0;
// Rendering info
virtual void SetRenderImage( IImage *pImage ) = 0;
virtual bool BIsRenderResolutionUpdated() = 0;
virtual void GetRenderWidth() = 0;
virtual void GetRenderHeight() = 0;
virtual EGraphicsAPI GetGraphicsAPI() = 0;
// Vulkan stuff
virtual int GetVulkanInstanceExtensionCount() = 0;
virtual const char **GetVulkanInstanceExtensions() = 0;
virtual void CreateVulkanSurface( void *pInstance, void *pDevice ) = 0;
virtual void DestroyVulkanSurface( void *pInstance, void *pDevice ) = 0;
virtual void *GetVulkanSurface() = 0;
virtual void *GetVulkanFence( int iFrame ) = 0;
virtual void *GetVulkanDrawSemaphore( int iFrame ) = 0;
virtual void *GetVulkanPresentSemaphore( int iFrame ) = 0;
virtual IImage *GetVulkanSwapchainImage( int iFrame ) = 0;
};
extern IGameWindow *gamewindow;
#endif