#pragma once #include "IUnityInterface.h" enum UnityGfxDeviceEventType { kUnityGfxDeviceEventInitialize = 0, kUnityGfxDeviceEventShutdown = 1, kUnityGfxDeviceEventBeforeReset = 2, kUnityGfxDeviceEventAfterReset = 3, }; enum UnityGfxRenderer { kUnityGfxRendererD3D11 = 2, kUnityGfxRendererD3D12 = 18, kUnityGfxRendererVulkan = 21, kUnityGfxRendererOpenGLCore = 17, }; typedef void (UNITY_INTERFACE_API * IUnityGraphicsDeviceEventCallback)(UnityGfxDeviceEventType eventType); typedef void (UNITY_INTERFACE_API * UnityRenderingEvent)(int eventId); struct IUnityGraphics : IUnityInterface { static const UnityInterfaceGUID GUID; virtual UnityGfxRenderer UNITY_INTERFACE_API GetRenderer() = 0; virtual void UNITY_INTERFACE_API RegisterDeviceEventCallback(IUnityGraphicsDeviceEventCallback callback) = 0; virtual void UNITY_INTERFACE_API UnregisterDeviceEventCallback(IUnityGraphicsDeviceEventCallback callback) = 0; virtual int UNITY_INTERFACE_API ReserveEventIDRange(int count) = 0; }; // {7CBA0A9C-0EFB-4B97-A51E-03B7B9994DC1} const UnityInterfaceGUID IUnityGraphics::GUID = { 0x7CBA0A9C0EFB4B97ULL, 0xA51E03B7B9994DC1ULL };