void RHIInit(bool bHasEditorToken) { if(!GDynamicRHI) { GRHICommandList.LatchBypass(); // read commandline for bypass flag if (FApp::ShouldUseNullRHI()) { InitNullRHI(); } else { GDynamicRHI = PlatformCreateDynamicRHI(); if (GDynamicRHI) { GDynamicRHI->Init(); GRHICommandList.GetImmediateCommandList().SetContext(GDynamicRHI->RHIGetDefaultContext()); GRHICommandList.GetImmediateAsyncComputeCommandList().SetComputeContext(GDynamicRHI->RHIGetDefaultAsyncComputeContext()); } #if PLATFORM_ALLOW_NULL_RHI else { // If the platform supports doing so, fall back to the NULL RHI on failure InitNullRHI(); } #endif } check(GDynamicRHI); } RHIDetectAndWarnOfBadDrivers(); }
void RHIInit(bool bHasEditorToken) { if(!GDynamicRHI) { GRHICommandList.LatchBypass(); // read commandline for bypass flag if (USE_NULL_RHI || FParse::Param(FCommandLine::Get(),TEXT("nullrhi")) || !FApp::CanEverRender()) { InitNullRHI(); } else { GDynamicRHI = PlatformCreateDynamicRHI(); if (GDynamicRHI) { GDynamicRHI->Init(); GRHICommandList.GetImmediateCommandList().SetContext(GDynamicRHI->RHIGetDefaultContext()); } #if PLATFORM_ALLOW_NULL_RHI else { // If the platform supports doing so, fall back to the NULL RHI on failure InitNullRHI(); } #endif } check(GDynamicRHI); } }