MCPcopy Create free account
hub / github.com/RavEngine/RavEngine / Load

Method Load

deps/LLGL/sources/Renderer/RenderSystem.cpp:139–226  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

137#endif // /LLGL_BUILD_STATIC_LIB
138
139std::unique_ptr<RenderSystem> RenderSystem::Load(
140 const RenderSystemDescriptor& renderSystemDesc,
141 RenderingProfiler* profiler,
142 RenderingDebugger* debugger)
143{
144 /* Initialize mobile specific states */
145 #if defined LLGL_OS_ANDROID
146
147 AndroidApp::Get().Initialize(renderSystemDesc.androidApp);
148
149 #endif
150
151 #ifdef LLGL_BUILD_STATIC_LIB
152
153 /* Allocate render system */
154 auto renderSystem = std::unique_ptr<RenderSystem>(
155 reinterpret_cast<RenderSystem*>(StaticModule::AllocRenderSystem(renderSystemDesc))
156 );
157
158 if (profiler != nullptr || debugger != nullptr)
159 {
160 #ifdef LLGL_ENABLE_DEBUG_LAYER
161
162 /* Create debug layer render system */
163 renderSystem = MakeUnique<DbgRenderSystem>(std::move(renderSystem), profiler, debugger);
164
165 #else
166
167 Log::PostReport(Log::ReportType::Error, "LLGL was not compiled with debug layer support");
168
169 #endif // /LLGL_ENABLE_DEBUG_LAYER
170 }
171
172 renderSystem->name_ = StaticModule::GetRendererName(renderSystemDesc.moduleName);
173 renderSystem->rendererID_ = StaticModule::GetRendererID(renderSystemDesc.moduleName);
174
175 /* Return new render system and unique pointer */
176 return renderSystem;
177
178 #else // LLGL_BUILD_STATIC_LIB
179
180 /* Load render system module */
181 auto moduleFilename = Module::GetModuleFilename(renderSystemDesc.moduleName.c_str());
182 auto module = Module::Load(moduleFilename.c_str());
183
184 /*
185 Verify build ID from render system module to detect a module,
186 that has compiled with a different compiler (type, version, debug/release mode etc.)
187 */
188 if (!LoadRenderSystemBuildID(*module, moduleFilename))
189 throw std::runtime_error("build ID mismatch in render system module");
190
191 try
192 {
193 /* Allocate render system */
194 auto renderSystem = std::unique_ptr<RenderSystem>(LoadRenderSystem(*module, moduleFilename, renderSystemDesc));
195
196 if (profiler != nullptr || debugger != nullptr)

Callers 2

RunMethod · 0.45
RunMethod · 0.45

Calls 12

PostReportFunction · 0.85
LoadRenderSystemBuildIDFunction · 0.85
LoadRenderSystemFunction · 0.85
LoadRenderSystemNameFunction · 0.85
InitializeMethod · 0.80
c_strMethod · 0.80
AllocRenderSystemFunction · 0.70
GetRendererNameFunction · 0.70
GetRendererIDFunction · 0.70
getMethod · 0.45
whatMethod · 0.45

Tested by

no test coverage detected