Files
UnrealEngine/Engine/Source/Developer/StandaloneRenderer/Private/StandaloneRenderer.cpp
2025-05-18 13:04:45 +08:00

58 lines
1.4 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "StandaloneRenderer.h"
#include "Interfaces/ISlateNullRendererModule.h"
#include "Misc/App.h"
#include "Misc/CommandLine.h"
#include "Modules/ModuleInterface.h"
#include "Modules/ModuleManager.h"
#include "Styling/CoreStyle.h"
#include "StandaloneRendererLog.h"
#if PLATFORM_WINDOWS
#include "Windows/D3D/SlateD3DRenderer.h"
#endif
#include "Rendering/SlateRenderer.h"
#include "OpenGL/SlateOpenGLRenderer.h"
DEFINE_LOG_CATEGORY(LogStandaloneRenderer);
/**
* Single function to create the standalone renderer for the running platform
*/
TSharedRef<FSlateRenderer> GetStandardStandaloneRenderer()
{
// create a standalone renderer object
TSharedPtr<FSlateRenderer> Renderer = NULL;
if (FApp::CanEverRender())
{
#if PLATFORM_WINDOWS
bool bUseOpenGL = FParse::Param( FCommandLine::Get(), TEXT("opengl") );
if( bUseOpenGL )
{
#endif
Renderer = TSharedPtr<FSlateRenderer>( new FSlateOpenGLRenderer( FCoreStyle::Get() ) );
#if PLATFORM_WINDOWS
}
else
{
Renderer = TSharedPtr<FSlateRenderer>( new FSlateD3DRenderer( FCoreStyle::Get() ) );
}
#endif
}
else
{
Renderer = FModuleManager::Get().LoadModuleChecked<ISlateNullRendererModule>("SlateNullRenderer").CreateSlateNullRenderer();
}
// enforce non-NULL pointer
return Renderer.ToSharedRef();
}
class FStandaloneRenderer : public IModuleInterface
{
};
IMPLEMENT_MODULE( FStandaloneRenderer, StandaloneRenderer )