90 auto& window = entt::locator<Window>::value();
91 auto& scenes = entt::locator<SceneManager>::value();
95 constexpr const auto dt = std::chrono::duration<long long, std::ratio<1, 60>> {1};
98 using clock = std::chrono::steady_clock;
99 using duration =
decltype(clock::duration {} + dt);
100 using time_point = std::chrono::time_point<clock, duration>;
103 time_point prev = clock::now();
104 time_point now = clock::now();
121 case SDL_EVENT_WINDOW_CLOSE_REQUESTED:
122 if (
m_events.window.windowID == SDL_GetWindowID(window.handle()))
146 while (window.is_open())
149 auto elapsed = now - prev;
177 window.append_title(std::format(
" | UPS: {0}, FPS: {1}", updates, frames));
306 if (!SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_JOYSTICK | SDL_INIT_GAMEPAD | SDL_INIT_EVENTS | SDL_INIT_HAPTIC | SDL_INIT_SENSOR))
319 auto& window = entt::locator<Window>::emplace();
324 auto& sampler = entt::locator<Sampler>::emplace();
332 sampler.set(GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST);
333 sampler.set(GL_TEXTURE_MAG_FILTER, GL_NEAREST);
336 sampler.set(GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
337 sampler.set(GL_TEXTURE_MAG_FILTER, GL_LINEAR);
340 sampler.set(GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
341 sampler.set(GL_TEXTURE_MAG_FILTER, GL_LINEAR);
349 sampler.set(GL_TEXTURE_MIN_FILTER, GL_NEAREST);
350 sampler.set(GL_TEXTURE_MAG_FILTER, GL_NEAREST);
354 sampler.set(GL_TEXTURE_MIN_FILTER, GL_LINEAR);
355 sampler.set(GL_TEXTURE_MAG_FILTER, GL_LINEAR);
364 else if (ansio > 4 && ansio < 8)
372 sampler.setf(GL_TEXTURE_MAX_ANISOTROPY,
static_cast<float>(ansio));
374 sampler.set(GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
375 sampler.set(GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
376 sampler.set(GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
377 sampler.set(GL_TEXTURE_LOD_BIAS, GL_NONE);