All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Fixed swapped paremeters
depth_fail_op,pass_opinglStencilOpSeparate - Added missing stubs for blend functions
- Fixed the Pipeline index buffer binding changed by buffer create
- Removed the
frame_timeparameter fromContext.new_framemethod - Removed the
syncparameter fromContext.end_framemethod
- Changed
zengl.cleanupto release objects - Added the
zengl.cleanupmissing stubs
- Implemented a builtin loader to avoid using ctypes
- Implemented
zengl.cleanupto cleanup the objects stored at module level - Implemented
Context.lostflag - Added the
Context.gcmissing stubs - Moved the
zengl.default_loadertoContext.loader - Fixed function pointer initialization flag type
- Fixed a one off memory leak in
zengl.init - Fixed the error message for the
Context.screensetter
- Fixed detection for python wasm sdk builds
- Improved the web support
- Implemented
DefaultLoader.extrato hold a reference to the objects created - Fixed shader log decode errors when invalid unicode characters are present
- Added validation for pipeline layout binding values
- Fixed the documentation
- Removed abi3 builds entirely
- Implemented the
offsetparameter forzengl.bind - Implemented the
instanceparameter forzengl.bind - Implemented the
Image.renderbufferattribute - Fixed the
Image.arraytype hints - Added the
zengl.default_loaderto hold a reference to the loader - Added an error message when invalid images are attached as textures
- Added
rgba8unormas the default value for theformatparameter in theContext.imagemethod - Removed the
Context.before_framecallback - Removed the
Context.after_framecallback - Removed abi3 builds for the web
- Fixed detection for both egl and x11 context types
- Improved the wayland support
- Added detection for both egl and x11 context types
- Fixed default argument value for reset in
Context.new_frame - Fixed the error message for multiple missing gl functions
- Changed the
Image.blitparameters tooffset,sizeandcrop - Removed the error messages from
Image.blitfor out of bounds regions - Added support for flipping images with a negative size in
Image.blit - Added support to blit depth and stencil images
- Added a default value for the
targetparameter in thezengl.cameramethod - Added support for angle brackets in shader includes
- Added support to hook the shader source right before compilation
- Added tuple length error checking for sizes and viewports
- Removed the srgb image formats
- Improved the typehints and documentation
- Fixed the canvas detection in a web environment
- Fixed the
zengl.bindtypehints
- Fixed
zengl.contextbroken signature in the web build - Fixed limits minimum and maximum values
- Added complete
Context.infosupport in the web build - Added pyscript and pygbag support alongside the pyodide support
- Fixed custom glsl linker error callback
- Added missing
Image.formattypehints - Added proper error message for a missing window in the default loader
- Removed
Buffer.mapandBuffer.unmap - Implemented
Buffer.readandBuffer.view - Implemented
intoparameter forImage.readandBuffer.read - Added support for Buffer sourced data
- Removed
dynamicflag fromContext.buffer - Added
accessflag toContext.buffer - Removed
Context.limits - Added limits to
Context.info - Changed framebuffer handling to only use the draw or read framebuffer binding
- Removed default framebuffer detection
- Fixed
zengl.max_combined_uniform_blocksmaximum value - Fixed catching empty include statements
- Added subinterpreter support
- Removed global reference for the default loader
- Changed
MAX_ATTACHMENTSto 8 - Changed
MAX_BUFFER_BINDINGSto 8 - Changed
MAX_SAMPLER_BINDINGSto 16
- Removed the loader parameter from
zengl.context - Implemented
zengl.initwith a loader parameter - Changed
zengl.contextto return the first created context - Fixed
Context.new_frametype hints and documentation - Fixed rendering to the default framebuffer without depth and stencil test
- Implemented a default loader for the web using the canvas by id
- Improved the documentation
- Added
index, anduniformparameters forContext.buffer - Fixed clear in
Context.new_framefor a nonzero default framebuffer - Removed deprecated
loadmethod support from the loader
- Added nativ web support without third party webgl binding
- Added
zengl.setup_glfor the web build - Fixed the default loader for osx
- Improved web support
- Added Python 3.12 release builds
- Added support for customized builds
- Implemented external pipeline render parameters
- Implemented external viewport data
- Implemented external uniform data
- Implemented uniform binding jump table
- Changed
Pipeline.uniformsto be always present
- Added web support
- Fixed no detectable viewport size when rendering to the default framebuffer
- Fixed init time mipmap level allocation width and height
- Changed
Image.blit()to supportImageFaceobjects - Changed
ImageFace.blit()to supportImageobjects - Implemented
Image.read()andImageFace.read()for cubemap and array images - Implemented
Image.read()andImageFace.read()for multisampled images - Implemented init time mipmap level allocation
- Removed the arguments of the
Image.mipmapsmethod - Added support for unbound vertex attributes
- Implemented the
Context.new_frame()andContext.end_frame()methods - Removed the flush parameter from
Image.blitmethod - Changed the
Context.pipeline()blending parameter to blend - Removed the skip_validation, primitive_restart, color_mask parameters from the
Context.pipeline()method - Primitive restart default index is enabled by default
- Changed the
Context.infotuple to a dictionary - Removed
glcontextdependency for windowed rendering - Implemented
zengl.__version__string
- Fixed zengl camera utility with broken translation in ortho mode
- Implemented default texture filter for improved external texture support
- Implemented external buffers and textures
- Changed
zengl.context()to prefer theload_opengl_function()over theload()method - Deprecated
ContextLoader.load()in favor ofContextLoader.load_opengl_function() - Fixed vertex array caching
- Fixed read buffer for depth only framebuffers
- Fixed empty vertex and fragment shader cache collision
- Fixed use after free in
Context.release()
- Moved zengl.pyi to zengl-stubs
- Fixed missing type hinting
- Implemented blending equations
- Fixed uniform struct array naming
- Implemented Pipeline uniforms
- Implemented rendering to cubemap faces and array layers
- Removed
zengl.pack() - Removed
zengl.rgba()
- Fixed unbound vertex shader builtin variables error reporting
- Fixed silent error for invalid topology
- Fixed redundant framebuffer bind when blitting images
- Replaced string formatting to f-strings in the
_zenglhelper module
- Fixed uniform buffer array members received a valid location parameter
- Deprecated
zengl.pack() - Deprecated
zengl.rgba()
- Fixed attribute array and uniform array location
- Fixed broken linker error formatting
- Added glcontext as a dependency
- Fixed setting depth function
- Fixed pipeline required arguments to raise an excenption
- Fixed buffer write size check with non zero offset
- Implemented error for renderbuffer images with initial data
- Implemented error for negative image array count
- Implemented range check for writing to already generated mipmap leves
- Implemented
Context.release('all') - Fixed cubemap images failed to create without initial data
- Fixed fault when clearing or blitting layered images
- Fixed reading depth and stencil images
- Fixed refcount for types when deinitializing the module
- Fixed
Image.blitsrgb parameter defaulted to the flush parameter - Removed deprecated
clear_shader_cache
- Implemented
Context.resetto assume the context is dirty - Fixed integer textures used the wrong base format
- Removed invalid texture format type hints
- Fixed broken bound object cache after releasing objects
- Improved invalid size error message for images
- Implemented write to image layer
- Fixed image write for all levels
- Fixed image create and image write stride for small cubemaps
- Implemented size check for image create and image write
- Implemented
Context.release('shader_cache') - Deprecated
clear_shader_cache
- Fixed reading single sample renderbuffers
- Support texture max anisotropy
- Removed deprecated
line_widthandfront_face
- Implemented flush parameter for blitting
- Improved default for srgb parameter for blitting
- Fixed error checking for image blitting
- Fixed dependency list for examples
- Support binding uniform and attribute arrays
- Optimized binding global settings
- Deprecated
line_widthandfront_face
- Support pipeline creation without validation
- Improved package info
- Fixed wrong stride used while initializing cubemap images
- Implemented size check for creating images
- Optimized binding the same global settings
- Optimized binding the same viewport
- Optimized cache for write masks for clear operations
- Fixed missing default depth function for explicit depth settings
- Fixed stencil test was on when no stencil buffer was present
- Improve interoperability for porting existing code
- Implemented
Context.screenas the default framebuffer - Implemented
zengl.inspectfor debugging
- Support list of ints where tuple of ints are expected
- Fixed broken
Pipeline.vertex_count,Pipeline.instance_countandPipeline.first_vertex
- Support x86 architecture
- Support raspberry pi
- Validate image format
- Removed
max_varying_componentslimit - Fixed blank screen for osx when double buffering is enabled
- Disabled shadow window configuration for osx
- Simplified examples main loop
- Implemented soft limit for max number of samples
- Implemented
Context.limits - Implemented uniform buffer size validation
- Blit to screen flushes the command buffer
- Fixed compile issues on multiple platforms
- Build wheels with cibuildwheel
First stable version