New Features
- moderngl and moderngl-window integration for imgui thought the pyimgui project.
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).
- We now use an experimental fork of Pyrr, pyrr-optimized for faster matrix calculations : https://github.com/einarf/pyrr-optimized
- Support for loading texture cubes
- Compute shader support.
- Support for passing defines to shaders
- Shader errors should now report the error line more accurately
Bug fixes
- pyglet window: Fixed incorrect mouse position on retina screens and windows with pixel ratio > 1.
- Shader loader did not properly ignore lines with comments
- Various typo fixes
- 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.
Bugfixes
- 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
Improvements
- 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: https://github.com/jonwright/pyopengltk. Currently only supports windows and linux, but that might change in the future.
- KeyboardCamera: Exposed
mouse_sensitivity
,velocity
andprojection
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