Changelogs » Moderngl-window

PyUp Safety actively tracks 262,542 Python packages for vulnerabilities and notifies you when to upgrade.



* imgui integration no longer relies on pyopengl
  * Bug: Properly parse `out` attributes with layout qualifiers
  * Bug: Do not cache system shaders at module level.
  We now cache them in the context to better support multiple windows.
  * Bug: OrbitCameraWindow - Fixed radians/degree issue
  * Bug: A window can now be closed from inside `render()`


* Fixed several issues causing the window close callback not being called
  * Fixed incorrect mouse button mapping in mouse drag events


* imgui renderer now supports moderngl textures. This opens up for both
  displaying images and animated framebuffer textures into imgui.
  * Scene: Fixed several issues related to shader assigning based on material properties.
  This especially affected wavefront/obj files.
  * OrbitCamera: Fixed translation issue (Leterax)
  * OrbitCamera: Now using degrees instead of radians (Leterax)
  * Bumped pyglet version to minimum 1.5.6. This version
  solves several issue with window events for MacBooks with Touch Bar


* `WindowConfig` now supports overriding the default arugment parser.
  A classmethod `add_arguments` can be implemented to add additional
  arguments. The parsed arguments are available in `self.argv`
  * Added in `Scene.draw_wireframe` rendering a scene in wire frame mode
  * `Scene.draw_bbox` now support passing in a `color`
  * `Scene` should now have better support for all the vertex formats
  wavefront/obj files may have.
  * Addded `WindowConfig.clear_color` attribute so uses can control the
  clear color of the screen. The value can be set to `None` to
  disable screen clearing (Leterax)
  * Added `OrbitCamera` (Leterax)
  * Allow setting camera rotation (Leterax)
  * `VAO` should now give better feedback if the buffers and program
  attributes are not compatible
  * `ModernGLRenderer` (imgui renderer) should not rely on moderngl-window (minuJeong)
  * `Scene` should now cache default shaders internally so they are not loaded
  for every scene
  * Several typos in docs (dawid-januszkiewicz)
  * `WindowConfig.load_compute_shader` missing in docs
  * Bumped pygame to `2.0.0.dev10`
  Thanks to Leterax, minuJeong and dawid-januszkiewicz for the contributions to this release
  and mtbouchard for input on `WindowConfig` and `Scene` changes.


  * Optimized the imgui renderer using `ctypes` instead of `numpy` for handling vertex data (aforren1)
  * Added support for ALT key modifier in all window backends and other improvements to key handling (OKaluza)
  * `WindowConfig` now supports a `fullscreen` attribute
  Thanks to Alex Forrence (aforren1) and Owen Kaluza (OKaluza) for the contributions to this release.


New Features
  * moderngl and moderngl-window integration for imgui thought the pyimgui project.
  This is fairly experimental and the rendered should probably be moved to the pyimgui project soon
  > Dear ImGui is a bloat-free graphical user interface library for C++. It outputs optimized vertex buffers that you can render anytime in your 3D-pipeline enabled application. It is fast, portable, renderer agnostic and self-contained (no external dependencies)
  * Compute shader support. `WindowConfig.load_compute_shader` and added `compute_shader` parameter for `ProgramDescription`.
  * Shaders now support `include` up to a maximum of 100 levels
  * Added support for gif anim. This can be loaded as a `Texture` or `TextureArray`
  * Added support for loading cube maps
  * `` shortcut
  * Each window backend now has a `name` property so the user can easily detect what window type they are given
  * `WindowConfig` now as a `vsync` property so the user can easily control this from python code
  * Scene: New methods to find materials and node by name
  Slightly Breaking Changes
  * All windows now use 0 samples (MSAA) by default. The default `samples = 4` caused way too much issues
  for people with older integrated gpus and when doing headless rendering when multisampling is not supported.
  Bug fixes
  * Fixed several issues with glft2 scenes and object orientation
  * pyglet window: Fixed incorrect mouse position on retina screens and windows
  with pixel ratio > 1.
  * sdl2: mouse press/release events was reversed
  * pygame2: Fix broken mouse wheel reading
  * glfw: Incorrect mapping of BACKSPACE key
  * glfw: Fixed an issue not setting vsync properly¨
  * headless: We now call `ctx.finish()` in `swap_buffers`
  * Shader errors should now report the error line more accurately
  * Various typo fixes


  * Windows now has an `exit_key` property that can be used to change
  or disable the exit key. This key is `ESCAPE` by default and can
  be disabled by setting the property to `None`. This is useful
  for users that don't want the default exit key behavior.
  * Log consumed glerrors after context creation as warnings
  Bug fixes
  * Pyglet mouse coordinates was translated wrong in cases were the
  framebuffer size is larger that then window. The mouse position
  should always use window coordinates.
  * VAOs should now properly support 64 bit floats / dvec
  * VAOs should be better at detecting/ignoring built in attributes
  * `Camera.look_at` had broken input validation when passing in a vector
  * Various typos in docstrings


Resolved an issue with version constraints causing some dependencies to install pre-release versions


* Missing `WindowConfig.close` method and support for close callback for all window types
  * Bug: KeyboardCamera's matrix is now always returned as a 32bit floats
  * Bug: Projection3D's matrix is now always returned as a 32bit floats
  * Example cleanup and improvements


* Bug: An `INVALID_ENUM` glerror triggered after querying context info is now consumed.


Bug fixes
  * SDL2 window now allows highdpi framebuffers when available
  * pygame2 window should only initialize the display module


Breaking Changes
  * `mouse_position_event` signature has changed from `(x, y)` to `(x, y, dx, dy)`.
  This means you will also be getting the relative position change.
  * `mouse_drag_event` signature has changed from `(x, y)` to `(x, y, dx, dy)`.
  This means you will also be getting the relative position change.
  * `KeyboardCamera.rot_state` now takes dx and dy instead of x and y
  * Python 3.8 support (PySide2 will take a few more months. SDL2 has issues on windows)
  * Added pygame2 window
  * Added window callback `iconify` for all window types that will be called
  when a window is minimized or restored
  * Window property `mouse_exclusivity` added for all window types.
  When enabled the mouse cursor is invisible and mouse position changes
  are only reported through the dx and dy values.
  * Window property `size` is now assignable for all window types
  * Window property `position` is now assignable for all window types
  * Window property `title` is now assignable for all window types
  * Window property `cursor` is now assignable for all window types
  * The `KeyboardCamera` class should now be better at reducing the
  chance of rotation and movement popping
  * All windows now properly separate viewport calculations when
  using fixed and free viewport (derived from window size)
  * The window `aspect_ratio` property should always return
  the a value based on if the aspect ratio is fixed or free
  * Added window `fixed_aspect_ratio` property so users can freely
  control this after window creation


* Added window property `position` for getting and setting window position for all window types
  * Added window properties: `viewport_size`, `viewport_width`, `viewport_height`
  * Upgraded dependency for tkinter window. `pyopengltk>=0.0.3`
  * Loosened up most of the requirements
  * Bug: Missing call to `tk.destroy()` in tk window


* Upgraded dependency for tkinter window. `pyopengltk==0.0.2`.


* Added experimental support for tkinter window. Relies on
  Jon Wright's pyopengltk package:
  Currently only supports windows and linux, but that might change
  in the future.
  * KeyboardCamera: Exposed `mouse_sensitivity`, `velocity` and `projection` attributes
  * Various missing docstring and docstring improvements
  * Various missing type hints


* Added support for mouse_drag events for all window types
  * Added support for unicode_char_entered (text input) for all windows
  * Added support for mouse wheel events for all window types


* Fixed several issue related to python 3.5 support
  * Upgraded to pywavefront 1.2.x
  * Renamed some modules and classes to better reflect their capabiltities
  * Renamed some inconsistent parameter names in the codebase
  * Complete overhaul of docstrings in the entire codebase
  * Added missing type hints
  * Revived the STL loader
  * Documentation
  * Added `moderngl_window.__version__` attribute


* GL errors during window creation is now consumed. This is to avoid confusion when this state is set in the rendering loop.
  * Default anisotropy for textures loaders is now 1.0 (disabled, isotropy)
  * Mipmaps are no longer generated by default. You must explicitly enable this in parameters.
  * WindowConfig.load_texture_2d now exposes more parameters
  * WindowConfig.load_texture_array now exposes more parameters
  * WindowConfig.load_scene now exposes more parameters
  * Texture loaders supports specifying mipmap levels
  * Texture loaders supports specifying anisotropy
  * VAO wrapper supports normalized float/uint/int
  * More tests


* Supported buffer formats in the VAO wrapper now matches moderngl better
  * VAO wrapper now uses buffer format strings matching moderngl including divisors
  * Fixed some logging issues


Initial release