Files
UnrealEngineUWP/Engine/Source/Runtime/SlateRHIRenderer/Private/Slate3DRenderer.h
Ben Marsh 20bf0eb6a1 Updating copyright notices to 2017 (copying from //Tasks/UE4/Dev-Copyright-2017).
#rb none
#lockdown Nick.Penwarden

[CL 3226823 by Ben Marsh in Main branch]
2016-12-08 08:52:44 -05:00

49 lines
1.8 KiB
C++

// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Rendering/SlateRenderer.h"
#include "Interfaces/ISlate3DRenderer.h"
#include "SlateRHIResourceManager.h"
#include "Rendering/SlateDrawBuffer.h"
#include "RenderingThread.h"
#include "SlateRHIRenderingPolicy.h"
class FSlateElementBatcher;
class FTextureRenderTarget2DResource;
class FSlate3DRenderer : public ISlate3DRenderer, public FDeferredCleanupInterface
{
public:
FSlate3DRenderer( TSharedRef<FSlateFontServices> InSlateFontServices, TSharedRef<FSlateRHIResourceManager> InResourceManager, bool bUseGammaCorrection = false );
void Cleanup();
virtual void FinishCleanup() override;
virtual FSlateDrawBuffer& GetDrawBuffer() override;
virtual void DrawWindow_GameThread(FSlateDrawBuffer& DrawBuffer) override;
virtual void DrawWindowToTarget_RenderThread(FRHICommandListImmediate& RHICmdList, FTextureRenderTarget2DResource* RenderTargetResource, FSlateDrawBuffer& InDrawBuffer, bool bInClearTarget) override;
private:
/** Double buffered draw buffers so that the rendering thread can be rendering windows while the game thread is setting up for next frame */
static const int32 NUM_DRAW_BUFFERS = 3;
FSlateDrawBuffer DrawBuffers[NUM_DRAW_BUFFERS];
/** The font services to use for rendering text */
TSharedRef<FSlateFontServices> SlateFontServices;
/** Texture manager for accessing textures on the game thread */
TSharedRef<FSlateRHIResourceManager> ResourceManager;
/** The rendering policy to use for drawing to the render target */
TSharedPtr<class FSlateRHIRenderingPolicy> RenderTargetPolicy;
/** Element batcher that renders draw elements */
TSharedPtr<FSlateElementBatcher> ElementBatcher;
/** The draw buffer that is currently free for use by the game thread */
uint8 FreeBufferIndex;
};