UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SlateRenderer.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
11#include "Fonts/FontTypes.h"
12#include "Types/SlateVector2.h"
13#include "PixelFormat.h"
14
15class FRHITexture;
16class FRenderTarget;
17class FRDGBuilder;
18class FRDGTexture;
23class ISlateStyle;
24class SWindow;
25struct Rect;
26class FSceneInterface;
27struct FSlateBrush;
28
30
45
50{
51public:
57
62
67
72 {
73 return GameThreadFontCache;
74 }
75
80 {
81 return RenderThreadFontCache;
82 }
83
88
93 {
94 return GameThreadFontMeasure;
95 }
96
101 {
102 return RenderThreadFontMeasure;
103 }
104
108 SLATECORE_API void FlushFontCache(const FString& FlushReason);
109
114
119
124
129
130private:
131 SLATECORE_API void HandleFontCacheReleaseResources(const class FSlateFontCache& InFontCache);
132
133 TSharedRef<class FSlateFontCache> GameThreadFontCache;
134 TSharedRef<class FSlateFontCache> RenderThreadFontCache;
135
136 TSharedRef<class FSlateFontMeasure> GameThreadFontMeasure;
137 TSharedRef<class FSlateFontMeasure> RenderThreadFontMeasure;
138
139 FOnReleaseFontResources OnReleaseResourcesDelegate;
140};
141
142
144{
145 void* Data;
148
150 : Data(nullptr)
151 , Width(0)
152 , Height(0)
153 {
154 }
155
156 bool IsValid() const
157 {
158 return Data && Width > 0 && Height > 0;
159 }
160
161 void Reset()
162 {
163 Data = nullptr;
164 Width = Height = 0;
165 }
166};
167
168
173{
174public:
175
178
181
182public:
185 {
192 {
193 SlateRenderer.ReleaseDrawBuffer(DrawBuffer);
194 }
197
199 {
200 return DrawBuffer;
201 }
202
203 private:
204 FSlateRenderer& SlateRenderer;
205 FSlateDrawBuffer& DrawBuffer;
206 };
207
208public:
210 UE_DEPRECATED(5.1, "Use FSlateRenderer::AcquireDrawBuffer instead and release the draw buffer.")
215
218
221
222 virtual bool Initialize() = 0;
223
224 virtual void Destroy() = 0;
225
231 virtual void CreateViewport( const TSharedRef<SWindow> InWindow ) = 0;
232
241
250
251
258 virtual void SetSystemResolution(uint32 Width, uint32 Height) = 0;
259
260
267
274
278
286
293
300
304
308
313
321
331 virtual bool GenerateDynamicImageResource( FName ResourceName, uint32 Width, uint32 Height, const TArray< uint8 >& Bytes ) { return false; }
332
333 virtual bool GenerateDynamicImageResource(FName ResourceName, FSlateTextureDataRef TextureData) { return false; }
334
335 virtual FSlateResourceHandle GetResourceHandle(const FSlateBrush& Brush, FVector2f LocalSize, float DrawScale) = 0;
336
347 {
348 return GetResourceHandle(Brush, FVector2f::ZeroVector, 1.0f);
349 }
350
351
353 virtual bool CanRenderResource(UObject& InResourceObject) const { return true; }
354
361
366 virtual void ReleaseDynamicResource( const FSlateBrush& Brush ) = 0;
367
368
371
374
380 virtual void* GetViewportResource( const SWindow& Window ) { return nullptr; }
381
389
397
405
413
417 virtual void FlushCommands() const {};
418
423 virtual void Sync() const {};
424
429 virtual void BeginFrame() const {};
430
435 virtual void EndFrame() const {};
436
440 virtual void ReloadTextureResources() {}
441
445 virtual void LoadStyleResources( const ISlateStyle& Style ) {}
446
454
456 virtual bool AreShadersInitialized() const { return true; }
457
463 virtual void InvalidateAllViewports() {}
464
471
477
483
487 UE_DEPRECATED(5.5, "SetWindowRenderTarget is no longer used.")
489
499
508
515
520
525
531
534 virtual void UnmapVirtualScreenBuffer() {}
535
541
544
546 virtual int32 GetCurrentSceneIndex() const = 0;
547
550
552 virtual void ClearScenes() = 0;
553
556
557 virtual bool HasLostDevice() const { return false; }
558
568
570
572private:
573
574 // Non-copyable
577
578 SLATECORE_API void HandleFontCacheReleaseResources(const class FSlateFontCache& InFontCache);
579
580protected:
581
584
587
591
594
600
602};
603
604
611
#define check(expr)
Definition AssertionMacros.h:314
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
FInt32Point FIntPoint
Definition MathFwd.h:124
EPixelFormat
Definition PixelFormat.h:16
@ PF_B8G8R8A8
Definition PixelFormat.h:19
EColorVisionDeficiency
Definition RenderingCommon.h:160
bool SLATECORE_API IsThreadSafeForSlateRendering()
Definition SlateRenderer.cpp:211
TRefCountPtr< FRHITexture > FTextureRHIRef
Definition SlateRenderer.h:29
bool SLATECORE_API DoesThreadOwnSlateRendering()
Definition SlateRenderer.cpp:216
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition NameTypes.h:617
Definition RenderGraphBuilder.h:49
Definition RenderGraphResources.h:571
Definition RHIResources.h:2153
Definition UnrealClient.h:30
Definition SceneInterface.h:106
Definition SlateDrawBuffer.h:20
Definition FontCache.h:756
Definition SlateRenderer.h:50
SLATECORE_API FOnReleaseFontResources & OnReleaseResources()
Definition SlateRenderer.cpp:115
TSharedRef< class FSlateFontMeasure > GetGameThreadFontMeasureService() const
Definition SlateRenderer.h:92
SLATECORE_API ~FSlateFontServices()
Definition SlateRenderer.cpp:31
TSharedRef< class FSlateFontCache > GetGameThreadFontCache() const
Definition SlateRenderer.h:71
SLATECORE_API void ReleaseResources()
Definition SlateRenderer.cpp:104
TSharedRef< class FSlateFontCache > GetRenderThreadFontCache() const
Definition SlateRenderer.h:79
SLATECORE_API TSharedRef< class FSlateFontMeasure > GetFontMeasureService() const
Definition SlateRenderer.cpp:58
SLATECORE_API void FlushFontCache(const FString &FlushReason)
Definition SlateRenderer.cpp:74
SLATECORE_API void FlushGameThreadFontCache(const FString &FlushReason)
Definition SlateRenderer.cpp:90
TSharedRef< class FSlateFontMeasure > GetRenderThreadFontMeasureService() const
Definition SlateRenderer.h:100
SLATECORE_API TSharedRef< class FSlateFontCache > GetFontCache() const
Definition SlateRenderer.cpp:42
SLATECORE_API void FlushRenderThreadFontCache(const FString &FlushReason)
Definition SlateRenderer.cpp:97
Definition SlateRenderer.h:173
virtual FSlateResourceHandle GetResourceHandle(const FSlateBrush &Brush)
Definition SlateRenderer.h:346
virtual bool GenerateDynamicImageResource(FName ResourceName, uint32 Width, uint32 Height, const TArray< uint8 > &Bytes)
Definition SlateRenderer.h:331
DECLARE_MULTICAST_DELEGATE_OneParam(FOnSlateWindowDestroyed, void *)
TSharedRef< class FSlateFontCache > GetFontCache() const
Definition SlateRenderer.h:401
virtual bool HasLostDevice() const
Definition SlateRenderer.h:557
virtual void OnWindowFinishReshaped(const TSharedPtr< SWindow > &InWindow)
Definition SlateRenderer.h:373
FOnPostResizeWindowBackbuffer PostResizeBackBufferDelegate
Definition SlateRenderer.h:590
virtual void RequestResize(const TSharedPtr< SWindow > &InWindow, uint32 NewSizeX, uint32 NewSizeY)=0
virtual void ReloadTextureResources()
Definition SlateRenderer.h:440
virtual SLATECORE_API ISlateAtlasProvider * GetTextureAtlasProvider()
Definition SlateRenderer.cpp:185
virtual FCriticalSection * GetResourceCriticalSection()=0
virtual bool GenerateDynamicImageResource(FName ResourceName, FSlateTextureDataRef TextureData)
Definition SlateRenderer.h:333
virtual bool AreShadersInitialized() const
Definition SlateRenderer.h:456
virtual void AddWidgetRendererUpdate(const struct FRenderThreadUpdateContext &Context, bool bDeferredRenderTargetUpdate)
Definition SlateRenderer.h:567
virtual bool CanRenderResource(UObject &InResourceObject) const
Definition SlateRenderer.h:353
FOnAddBackBufferReadyToPresentPass OnAddBackBufferReadyToPresentPassDelegate
Definition SlateRenderer.h:593
virtual SLATECORE_API void DestroyCachedFastPathRenderingData(struct FSlateCachedFastPathRenderingData *VertexData)
Definition SlateRenderer.cpp:196
virtual void RemoveDynamicBrushResource(TSharedPtr< FSlateDynamicImageBrush > BrushToRemove)=0
FOnSlateWindowRendered & OnSlateWindowRendered()
Definition SlateRenderer.h:277
FOnSlateWindowDestroyed & OnSlateWindowDestroyed()
Definition SlateRenderer.h:285
virtual FSlateUpdatableTexture * CreateSharedHandleTexture(void *SharedHandle)=0
virtual bool Initialize()=0
virtual void ReleaseAccessedResources(bool bImmediatelyFlush)
Definition SlateRenderer.h:470
void FlushFontCache(const FString &FlushReason)
Definition SlateRenderer.h:409
virtual void OnVirtualDesktopSizeChanged(const FDisplayMetrics &NewDisplayMetric)
Definition SlateRenderer.h:571
virtual void SetWindowRenderTarget(const SWindow &Window, class IViewportRenderTargetProvider *Provider)
Definition SlateRenderer.h:488
virtual void PrepareToTakeHDRScreenshot(const FIntRect &Rect, TArray< FLinearColor > *OutColorData, SWindow *InScreenshotWindow)
Definition SlateRenderer.h:482
virtual FSlateDrawBuffer & GetDrawBuffer()
Definition SlateRenderer.h:211
DECLARE_TS_MULTICAST_DELEGATE_ThreeParams(FOnAddBackBufferReadyToPresentPass, FRDGBuilder &, SWindow &, FRDGTexture *)
virtual void MapVirtualScreenBuffer(FMappedTextureBuffer *OutImageData)
Definition SlateRenderer.h:533
virtual void * GetViewportResource(const SWindow &Window)
Definition SlateRenderer.h:380
FOnSlateWindowDestroyed OnSlateWindowDestroyedDelegate
Definition SlateRenderer.h:588
virtual FSlateResourceHandle GetResourceHandle(const FSlateBrush &Brush, FVector2f LocalSize, float DrawScale)=0
DECLARE_MULTICAST_DELEGATE_OneParam(FOnPreResizeWindowBackbuffer, void *)
virtual void SetCurrentSceneIndex(int32 InIndex)=0
TSharedRef< class FSlateFontMeasure > GetFontMeasureService() const
Definition SlateRenderer.h:393
virtual EPixelFormat GetSlateRecommendedColorFormat()
Definition SlateRenderer.h:569
virtual void PrepareToTakeScreenshot(const FIntRect &Rect, TArray< FColor > *OutColorData, SWindow *InScreenshotWindow)
Definition SlateRenderer.h:476
virtual void DrawWindows(FSlateDrawBuffer &InWindowDrawBuffer)=0
virtual void ReleaseDrawBuffer(FSlateDrawBuffer &InWindowDrawBuffer)=0
virtual void UnmapVirtualScreenBuffer()
Definition SlateRenderer.h:534
virtual void ClearScenes()=0
virtual void RestoreSystemResolution(const TSharedRef< SWindow > InWindow)=0
virtual void SetSystemResolution(uint32 Width, uint32 Height)=0
virtual FSlateUpdatableTexture * CreateUpdatableTexture(uint32 Width, uint32 Height)=0
virtual void Destroy()=0
FOnAddBackBufferReadyToPresentPass & OnAddBackBufferReadyToPresentPass()
Definition SlateRenderer.h:307
virtual void UpdateFullscreenState(const TSharedRef< SWindow > InWindow, uint32 OverrideResX=0, uint32 OverrideResY=0)=0
FOnPreResizeWindowBackbuffer PreResizeBackBufferDelegate
Definition SlateRenderer.h:589
virtual SLATECORE_API void DestroyCachedFastPathElementData(struct FSlateCachedElementData *ElementData)
Definition SlateRenderer.cpp:202
virtual SLATECORE_API ~FSlateRenderer()
Definition SlateRenderer.cpp:137
virtual void Sync() const
Definition SlateRenderer.h:423
virtual void ReleaseUpdatableTexture(FSlateUpdatableTexture *Texture)=0
FOnBackBufferReadyToPresent OnBackBufferReadyToPresentDelegate
Definition SlateRenderer.h:592
virtual SLATECORE_API ISlateAtlasProvider * GetFontAtlasProvider()
Definition SlateRenderer.cpp:191
FOnPostResizeWindowBackbuffer & OnPostResizeWindowBackBuffer()
Definition SlateRenderer.h:299
virtual void FlushCommands() const
Definition SlateRenderer.h:417
TSharedPtr< FSlateFontServices > SlateFontServices
Definition SlateRenderer.h:583
FOnBackBufferReadyToPresent & OnBackBufferReadyToPresent()
Definition SlateRenderer.h:303
virtual void InvalidateAllViewports()
Definition SlateRenderer.h:463
DECLARE_MULTICAST_DELEGATE_OneParam(FOnPostResizeWindowBackbuffer, void *)
virtual void CopyWindowsToVirtualScreenBuffer(const TArray< FString > &KeypressBuffer)
Definition SlateRenderer.h:530
TSharedRef< FSlateFontServices > GetFontServices() const
Definition SlateRenderer.h:385
virtual void SetColorVisionDeficiencyType(EColorVisionDeficiency Type, int32 Severity, bool bCorrectDeficiency, bool bShowCorrectionWithDeficiency)
Definition SlateRenderer.h:312
FOnPreResizeWindowBackbuffer & OnPreResizeWindowBackBuffer()
Definition SlateRenderer.h:292
virtual void LoadStyleResources(const ISlateStyle &Style)
Definition SlateRenderer.h:445
virtual int32 RegisterCurrentScene(FSceneInterface *Scene)=0
virtual void BeginFrame() const
Definition SlateRenderer.h:429
SLATECORE_API bool IsViewportFullscreen(const SWindow &Window) const
Definition SlateRenderer.cpp:152
virtual FSlateDrawBuffer & AcquireDrawBuffer()=0
FOnSlateWindowRendered SlateWindowRendered
Definition SlateRenderer.h:586
DECLARE_MULTICAST_DELEGATE_TwoParams(FOnSlateWindowRendered, SWindow &, void *)
virtual int32 GetCurrentSceneIndex() const =0
virtual FIntPoint GenerateDynamicImageResource(const FName InTextureName)
Definition SlateRenderer.h:320
virtual void OnWindowDestroyed(const TSharedRef< SWindow > &InWindow)=0
virtual void CreateViewport(const TSharedRef< SWindow > InWindow)=0
virtual void EndFrame() const
Definition SlateRenderer.h:435
FCriticalSection ResourceCriticalSection
Definition SlateRenderer.h:599
DECLARE_TS_MULTICAST_DELEGATE_TwoParams(FOnBackBufferReadyToPresent, SWindow &, const FTextureRHIRef &)
friend class FSlateRenderDataHandle
Definition SlateRenderer.h:601
virtual void ReleaseDynamicResource(const FSlateBrush &Brush)=0
Definition SlateResourceHandle.h:16
Definition SlateUpdatableTexture.h:15
Definition ISlate3DRenderer.h:13
Definition TextureAtlas.h:328
Definition ISlateStyle.h:18
Definition SWindow.h:243
Definition RefCounting.h:454
Definition SharedPointer.h:692
TSharedRef< ObjectType, Mode > ToSharedRef() const &
Definition SharedPointer.h:1028
Definition SharedPointer.h:153
Definition Object.h:95
Definition GenericApplication.h:357
Definition SlateRenderer.h:144
void * Data
Definition SlateRenderer.h:145
FMappedTextureBuffer()
Definition SlateRenderer.h:149
void Reset()
Definition SlateRenderer.h:161
int32 Height
Definition SlateRenderer.h:147
int32 Width
Definition SlateRenderer.h:146
bool IsValid() const
Definition SlateRenderer.h:156
Definition SlateRenderer.h:35
FRenderTarget * RenderTarget
Definition SlateRenderer.h:41
bool bClearTarget
Definition SlateRenderer.h:43
float DeltaRealTimeSeconds
Definition SlateRenderer.h:40
class FSlateDrawBuffer * WindowDrawBuffer
Definition SlateRenderer.h:36
double RealTimeSeconds
Definition SlateRenderer.h:39
float DeltaTimeSeconds
Definition SlateRenderer.h:38
double WorldTimeSeconds
Definition SlateRenderer.h:37
ISlate3DRenderer * Renderer
Definition SlateRenderer.h:42
Definition SlateBrush.h:239
Definition DrawElements.h:140
Definition DrawElements.h:29
Definition SlateRenderer.h:185
~FScopedAcquireDrawBuffer()
Definition SlateRenderer.h:191
FSlateDrawBuffer & GetDrawBuffer()
Definition SlateRenderer.h:198
FScopedAcquireDrawBuffer & operator=(const FScopedAcquireDrawBuffer &)=delete
FScopedAcquireDrawBuffer(const FScopedAcquireDrawBuffer &)=delete
FScopedAcquireDrawBuffer(FSlateRenderer &InSlateRenderer)
Definition SlateRenderer.h:186
Definition LinuxPlatformSplash.cpp:43
Definition IntPoint.h:25
static CORE_API const TVector2< float > ZeroVector
Definition Vector2D.h:63