Cross‑platform OpenGL window/context helper for desktop and Emscripten.
Provides a minimal environment wrapper that creates and manages an OpenGL context and window/canvas, exposes dimensions, vsync, FPS counter, and basic input callback wiring. On desktop it uses GLFW (+**GLEW** initialization); on the web it uses Emscripten WebGL APIs.
Key features:
- Creation of an OpenGL (or WebGL) context with configurable version and profile (GLEnv::GLEnv).
- Event callback registration for keyboard, mouse, and resize.
- Frame lifecycle utilities: endOfFrame() swaps buffers/polls events and updates an optional FPS counter in the window title.
- Dimension queries (getFramebufferSize(), getWindowSize()).
- VSync control (setSync(), getSync()).
- Simple cursor mode handling via setCursorMode().
All GL error handling uses the utilities declared in GLDebug.h.