44 lines
1.1 KiB
C++
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
|