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();
110 while (window.is_open())
113 auto elapsed = now - prev;
138 case SDL_EVENT_WINDOW_CLOSE_REQUESTED:
139 if (
m_events.window.windowID == SDL_GetWindowID(window.handle()))
163 window.append_title(std::format(
" | UPS: {0}, FPS: {1}", updates, frames));
277 if (!SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_JOYSTICK | SDL_INIT_GAMEPAD | SDL_INIT_EVENTS | SDL_INIT_HAPTIC | SDL_INIT_SENSOR))
290 auto& window = entt::locator<Window>::emplace();
295 auto& sampler = entt::locator<Sampler>::emplace();
303 sampler.set(GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST);
304 sampler.set(GL_TEXTURE_MAG_FILTER, GL_NEAREST);
307 sampler.set(GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
308 sampler.set(GL_TEXTURE_MAG_FILTER, GL_LINEAR);
311 sampler.set(GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
312 sampler.set(GL_TEXTURE_MAG_FILTER, GL_LINEAR);
320 sampler.set(GL_TEXTURE_MIN_FILTER, GL_NEAREST);
321 sampler.set(GL_TEXTURE_MAG_FILTER, GL_NEAREST);
325 sampler.set(GL_TEXTURE_MIN_FILTER, GL_LINEAR);
326 sampler.set(GL_TEXTURE_MAG_FILTER, GL_LINEAR);
335 else if (ansio > 4 && ansio < 8)
343 sampler.setf(GL_TEXTURE_MAX_ANISOTROPY,
static_cast<float>(ansio));
345 sampler.set(GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
346 sampler.set(GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
347 sampler.set(GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
348 sampler.set(GL_TEXTURE_LOD_BIAS, GL_NONE);