world_bootstrap.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include "world_bootstrap.h"
  2. #include "render/gl/bootstrap.h"
  3. #include "render/ground/ground_renderer.h"
  4. namespace Game::Map {
  5. auto WorldBootstrap::initialize(Render::GL::Renderer &renderer,
  6. Render::GL::Camera &camera,
  7. Render::GL::GroundRenderer *ground,
  8. QString *out_error) -> bool {
  9. if (!Render::GL::RenderBootstrap::initialize(renderer, camera)) {
  10. if (out_error != nullptr) {
  11. *out_error =
  12. "Failed to initialize OpenGL renderer.\n\n"
  13. "This usually means:\n"
  14. "1. Running in software rendering mode (QT_QUICK_BACKEND=software)\n"
  15. "2. Graphics drivers don't support required OpenGL version\n"
  16. "3. Running in a VM with incomplete OpenGL support\n\n"
  17. "To fix:\n"
  18. "- For full 3D functionality, run without QT_QUICK_BACKEND set\n"
  19. "- Update graphics drivers\n"
  20. "- On VMs: Enable 3D acceleration in VM settings";
  21. }
  22. return false;
  23. }
  24. if (ground != nullptr) {
  25. ground->configureExtent(50.0F);
  26. }
  27. return true;
  28. }
  29. void WorldBootstrap::ensureInitialized(bool &initialized,
  30. Render::GL::Renderer &renderer,
  31. Render::GL::Camera &camera,
  32. Render::GL::GroundRenderer *ground,
  33. QString *out_error) {
  34. if (!initialized) {
  35. initialized = initialize(renderer, camera, ground, out_error);
  36. }
  37. }
  38. } // namespace Game::Map