MCPcopy Create free account
hub / github.com/LukasBanana/LLGL / ExampleBase

Method ExampleBase

examples/Cpp/ExampleBase/ExampleBase.cpp:487–641  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

485}
486
487ExampleBase::ExampleBase(const LLGL::UTF8String& title)
488{
489 // Set report callback to standard output if not already done
490 LLGL::Log::RegisterCallbackStd();
491
492 // Set up renderer descriptor
493 LLGL::RenderSystemDescriptor rendererDesc = g_Config.rendererModule;
494
495 #if defined LLGL_OS_ANDROID
496
497 LLGL::RendererConfigurationOpenGL cfgGL;
498
499 if (android_app* app = ExampleBase::androidApp_)
500 rendererDesc.androidApp = app;
501 else
502 LLGL_THROW_INVALID_ARGUMENT("'android_app' state was not specified");
503
504 if (rendererDesc.moduleName == "OpenGLES3")
505 {
506 cfgGL.majorVersion = 3;
507 cfgGL.minorVersion = 1;
508 rendererDesc.rendererConfig = &cfgGL;
509 rendererDesc.rendererConfigSize = sizeof(cfgGL);
510 }
511 #endif
512
513 if (g_Config.debugger)
514 {
515 debuggerObj_ = std::unique_ptr<LLGL::RenderingDebugger>{ new LLGL::RenderingDebugger() };
516 #ifdef LLGL_DEBUG
517 rendererDesc.flags = LLGL::RenderSystemFlags::DebugDevice;
518 #endif
519 rendererDesc.debugger = debuggerObj_.get();
520 }
521
522 // Create render system
523 LLGL::Report report;
524 rendererDesc.flags |= g_Config.flags;
525 renderer = LLGL::RenderSystem::Load(rendererDesc, &report);
526
527 // Fallback to null device if selected renderer cannot be loaded
528 if (!renderer)
529 {
530 LLGL::Log::Errorf("Failed to load \"%s\" module. Falling back to \"Null\" device.\n", rendererDesc.moduleName.c_str());
531 LLGL::Log::Errorf("Reason for failure: %s", report.HasErrors() ? report.GetText() : "Unknown\n");
532 renderer = LLGL::RenderSystem::Load("Null");
533 if (!renderer)
534 {
535 LLGL::Log::Errorf("Failed to load \"Null\" module. Exiting.\n");
536 exit(1);
537 }
538 }
539
540 // Create swap-chain
541 LLGL::SwapChainDescriptor swapChainDesc;
542 {
543 swapChainDesc.debugName = "SwapChain";
544 swapChainDesc.resolution = ScaleResolutionForDisplay(g_Config.windowSize, LLGL::Display::GetPrimary());

Callers

nothing calls this directly

Calls 15

RegisterCallbackStdFunction · 0.85
ErrorfFunction · 0.85
PrintfFunction · 0.85
ListenMethod · 0.80
HasErrorsMethod · 0.65
GetTextMethod · 0.65
GetRenderingCapsMethod · 0.65
CreateSwapChainMethod · 0.65
SetVsyncIntervalMethod · 0.65
GetSamplesMethod · 0.65
GetResolutionMethod · 0.65

Tested by

no test coverage detected