- Bugfix release to not panic when given multiple vertex attributes with unspecified location numbers.
- Updated glutin to version 0.29.0. See the glutin release notes here.
- Support for location binding for Vertex attributes.
- Updated glutin to version 0.28.0. See the glutin release notes here.
- Use mdbook for the book.
- Added depth and stencil buffer blitting.
- Added dual source blending.
- Implemented AsUniformValue for Texture2d directly.
- Added
ClientFormat::U1U5U5U5Reversed
. - Updated
ouroboros
to 0.10.
- Updated glutin to version 0.27.0. See the glutin release notes here.
- Replaced unmaintained
rental
withouroboros
. - Allow instancing on GLES3 or later.
- Support for importing and using Vulkan semaphores.
- Made
Content::read
an unsafe API. - Modernized and fixed the third chapter of the tutorial.
- Updated rand to 0.8.
- Updated cgmath to 0.18.
- Made
UniformsStorage
implementCopy
andClone
. - Use
$crate::uniform!
internally. - Implemented
From
instead ofInto
for some conversions.
- Updated glutin to version 0.26.0. See the glutin release notes here.
- Updated memoffset to 0.6.
- Added support for
glPolygonOffset
. - Added support for loading SPIR-V shaders.
- Switched to edition 2018.
- Switched from Travis CI to Github Actions
- Updated glutin to version 0.25.0. See the glutin release notes here.
- Implemented atomic counters.
- Added
CubeMapArrays
support.
- Updated glutin to version 0.24.0. See the glutin release notes here.
- Updated glutin to version 0.23.0. See the glutin release notes here.
- Removal of some unsound code that rustc warns about
- Report the precise shader stage in which a shader failed compilation
- Silenced deprecation warning when invoking
implement_vertex
.
- Updated glutin to version 0.21.
- Updated glutin to version 0.20. See the glutin release notes here.
- Depth comparison and shadow mapping (#1679).
- Updated glutin to version 0.19. See the glutin release notes here.
- Updated glutin to version 0.17.
- Updated glutin to version 0.16. Added 'icon_loading' feature.
- Updated glutin to version 0.14. Fixes handling of HiDPI on macOS.
- Updated gl_generator to version 0.9.
- Updated glutin to version 0.12.
- Updated smallvec from version 0.4 to 0.6.
- Updated misc internal dependencies and dev-dependencies (lazy_static, cgmath, rand, image, gl_generator).
- Replaced the
IntoVerticesSource
trait withInto<VerticesSource>
. - Fixed rendering bug on high-DPI screens.
- Added support for clipping via
gl_ClipDistance
. - Enabled depth-stencil FBO attachments.
- Updated glutin to version 0.11. Notably includes the winit 0.9 update.
- Updated gl_generator to 0.7 (internal dependency).
- Fixed links pointing to tomaka/glium instead of glium/glium
- Various documentation updates, bugfixes, and dependency updates.
- Updated glutin to version 0.10.
- Added support for is_buffer_supported usage on all buffer types.
- Various documentation updates and bugfixes.
- Changed documentation to docs.rs.
- Various bugfixes and updates to internal dependencies.
- Updated glutin to version 0.9.
- Redesigned API around EventsLoop to match updated winit design.
- Added support for vector normalization.
- Various bugfixes.
- Added asynchronous screenshot example.
- Updated tutorials to compile on Mac OS X.
- Various tutorial documentation updates.
- Fix buffer reads which could fail being safe.
- Various bugfixes.
- Updated glutin to version 0.6.1
- Various internal dependency updates.
- Updated glutin to version 0.5.
- Various bugfixes.
- Fixed integer textures using a forbidden filtering by default.
- Better error report in case of a uniform block layout mismatch.
- Added support for shader subroutines.
- Added various functions to
Context
to retrieve information (like the content ofGL_VENDOR
orGL_RENDERER
for example). - Added additional dimensions getters to the various texture types.
- Added constructors to
SimpleFrameBuffer
for depth-only, depth-stencil-only, stencil-only and depth & stencil framebuffers.
- Fixed compilation on ARM platform.
- Added a hack to make screenshots and video taken with the FRAPS software work.
raw_read_to_pixel_buffer
now accepts all pixel types.
- Removed native support for cgmath and nalgebra in avoid to avoid dependency hell.
- Reworked the layer-related, level-related functions and
into_image
from texture types where they are not relevant. - The
Backend::get_proc_address
function now takes a*const std::os::raw::c_void
instead of a*const ()
.
- Added small hack to make glium work with WebGL.
- Fixed blend color state not being always updated.
- Added
raw_clear_buffer
toTextureAnyImage
, which allows you to clear the content of any texture. - Added
TextureAny::from_id
to manipulate an unowned texture.
- Fixed a bug when matching frag output locations with framebuffer attachments.
- Added
MultiOutputFrameBuffer::with_stencil
,with_depth_stencil
andwith_depth_and_stencil
. - Implemented the
ToColorAttachment
trait for unsigned and integral textures. - Implemented the
ToXAttachment
traits for theXAttachment
types. - It is now possible to use another format than
(u8, u8, u8, u8)
withraw_read
on a texture.
- Removed the "image" feature and native support for the
image
. You now have to perform conversions yourself. - The
Backend::get_proc_address
function now takes a*const ()
instead of a*const libc::c_void
. - Creating a
MultiOutputFrameBuffer
now requires passing an iterator instead of aVec
. - When checking a uniform block's layout,
[f32; 4]
now matches bothvec4
andfloat[4]
instead of justvec4
before. Same for all other arrays between 1 and 4 elements. UniformBlock
is now implemented for[T; N]
where N is between 5 and 32, plus 64, 128, 256, 512, 1024 and 2048.- When checking a uniform block's layout, arrays (sized and unsized) now match structs with a single member that is an array.
- Fix broken compilation after libc 0.2.
- Updated the versions of glutin, image and cgmath.
- Improved performance of stencil-related state changes.
- Fixed
glBufferData
being called to invalidate a buffer created withglBufferStorage
. - Changed use of
Range
in buffer slice toRangeArgument
.
- Update glutin to 0.4, cgmath to 0.3 and nalgebra to 0.3.
- Add the possibility to set the behavior of the debug callback in
Context::new
. - Add
build_glium_debug
andbuild_glium_unchecked_debug
to set the behavior of the debug callback at initialization. - Rename
ClockWise
toClockwise
. - The
program!
macro now returns aProgramChooserCreationError
and no longer panics if no version is found. - Remove the
Texture
trait. All of its methods are already implemented on all texture types already. - Rename
UniformBlock::binding
toid
and addinitial_binding
.
- Fixed an invalid enum error during initialization.
- Add
is_color_renderable
to the color image formats. - Fixed glium erroneously using a SSBO's and a uniform buffer's binding point instead of index.
- Fixed
glInvalidateBuffer(Sub)Data
being called for persistent-mapped buffers.
- Add
ComputeShader::execute_indirect
. - Add support for 64bits integer uniforms.
copy_to
now takes aInto<BufferSlice>
instead of aBufferSlice
.- Glium no longer calls
glBlendColor
if the blending algorithm doesn't use it. - Deprecated
DrawParameters::validate
.
- The blending, depth and stencil functions now use dedicated structs named
Blend
,Depth
andStencil
. SimpleFrameBuffer
andMultiOutputFrameBuffer
's constructors now return aResult
.- Creating a renderbuffer now returns a
Result
. - Add support for empty framebuffers with the
EmptyFrameBuffer
type. - Fix an OpenGL error when mapping a buffer with
map_read
. - Glium no longer panics in case of OpenGL error. It prints a message with backtrace on stdout instead.
- Removed the
DrawParametersBuilder
struct. - Add
clear_color_srgb
and derivates. Theclear
method has an additionalcolor_srgb: bool
parameter. - Added some state changes when swapping buffers to adapt to the FRAPS software.
- Removed
StencilTexture3d
are they are not supported by OpenGL.
- Fix a panic when creating a stencil renderbuffer or texture.
- Add support for
f64
uniforms.
- Renamed
BufferView
toBuffer
.BufferView
still exists for backward compatibility. - Add a
copy_to
method to buffers. - Add support for the
GL_OES_element_index_uint
extension. - Fixed OpenGL ES 3.2 not working.
- Add support for
IntVec{2|3|4}
andUnsignedIntVec{2|3|4}
uniform types. - Add a work-around for Radeon drivers crashing with 32+ texture units.
- Add support for
boolean
uniforms. - Add support for
BoolVec{2|3|4}
uniform types.
- Added support for cubemaps and cubemap arrays. Not all operations are available yet.
DrawParameters
no longer implementsCopy
.- Add support for OpenGL ES 3.2 for geometry shaders, tessellation shaders, robustness, debug output, buffer textures, stencil textures, base vertex.
- Add support for
GL_OES_geometry_shader
,GL_OES_tessellation_shader
GL_OES_draw_elements_base_vertex
,GL_OES_draw_elements_base_vertex
. - Add support for specifying the primitive bounding box as an optimization hint to the backend.
- Added various
is_texture_*_supported
functions in thetexture
module to check whether a texture type is supported.
- Added
#[inline]
attributes on many functions. - Added
slice_custom
andslice_custom_mut
to buffers, which allow you to get slices over anything inside the buffer. - Added
Query::to_buffer_u32
to write the result of a query to a buffer. - Added
is_supported
functions for all the texture and renderbuffer formats. - Added missing
I16I16I16I16
andU16U16U16
float formats. RenamedU3U32U
toU3U3U2
. - Various fixes and improvements when determining whether a format is supported.
- Changed the
framebuffer::To*Attachment
traits with a lifetime parameter, and to take by value instead of by reference. - The
framebuffer::To*Attachment
traits are now implemented onTextureLayerMipmap
structs. - Fixed
.layer()
function returningNone
when it shouldn't. - GLSL ES 3.2 is now recognized.
- Textures are now inside submodules (for example
Texture2d
is intexture::texture2d::Texture2d
) and reexported fromtexture
. - Added
Context::flush()
andContext::finish()
. DeprecatedContext::synchronize
. - Removed
Sized
constraint forSurface
that was preventing one from using&Surface
or&mut Surface
. - Added
TextureAnyMipmap::raw_upload_from_pixel_buffer
. - Moved the
pixel_buffer
module totexture::pixel_buffer
(the old module still exists for backward compatibility).
- Added a
buffer_texture
module intexture
. - Added
DrawParameters::depth_clamp
andDrawError::DepthClampNotSupported
.
- Added
DrawParameters::ProvokingVertex
andDrawError::ProvokingVertexNotSupported
. - Added
DrawError::RasterizerDiscardNotSupported
. DrawParametersBuilder
is now deprecated.ProgramCreationInput
now has aoutputs_srgb
member.- Fixed a bug with offsets of members in arrays.
- Added support for the
GL_EXT_geometry_shader
OpenGL ES extension.
- Removed all Cargo features related to OpenGL compatibility.
- Replaced all
new_if_supported
orempty_if_supported
functions withnew
orempty
and a proper error type. - All
new
andempty
constructors now return an error if the operation is not supported. VertexBuffer
andIndexBuffer
constructors now take a&[T]
.- Updated glutin to version 0.3.
BufferView
's constructors now take aBufferMode
.- Replaced
read
andread_if_supported
withread
that returns aReadError
. - Added
buffer::is_buffer_read_supported
. - Removed the deprecated
new_empty
function from textures. - Reworked
TextureCreationError
and removedTextureMaybeSupportedCreationError
. new
anddynamic
are now less specialized, which should fix some performance bottlenecks.- All buffer constructors now come in four variants:
new
,dynamic
,persistent
,immutable
. - Add support for all missing vertex attributes.
- Fixed stencil operations sometimes not working.
- Glium now automatically calls
glDraw*BaseVertex
if it is supported. - Added the
CapabilitiesSource
trait implemented automatically on all types that implementFacade
. - Added
is_supported
toIndexType
,Index
,PrimitiveType
,Attribute
andAttributeType
. - Added
ComputeShader::is_supported
,program::is_geometry_shader_supported
andprogram::is_tessellation_shader_supported
. - The
implement_buffer_content!
andimplement_block_layout!
macros can now take a struct with a lifetime parameter by passingFoo<'a>
instead ofFoo
.
- Buffers now contain a single, possibly unsized, element.
BufferView<T>
is nowBufferView<[T]>
. - Creating an empty
BufferView<[T]>
now requires callingempty_array
instead ofempty
. BufferView::write
now takes a&T
instead of aP where P: AsRef<[T]>
. This means that you can no longer passVec
s by value for example.- Removed the mock methods from
UniformBuffer
as they are available through theDeref
toBufferView
. - The
UniformBlock
trait is now implemented onDrawCommandNoIndices
andDrawCommandIndices
. - Added the
implement_buffer_content!
macro to put on unsized struct so that you can put them inside buffers. - Added a
uniforms::LayoutMismatchError
as an additional field toDrawError::UniformBlockLayoutMismatch
. - Changed
UniformBlock::matches
to return aResult<(), UniformBlockLayoutMismatch>
. - Removed the
matches
function from theAsUniformValue
trait. - Removed
TextureSurface
in favor ofSimpleFrameBuffer
.
- Added
DrawCommandsIndicesBuffer
for multidraw elements indirect. - Added
ResidentTexture
,TextureHandle
andTexture::resident_if_supported()
for bindless textures. - Buffers no longer require their content to be
Send
or'static
(except for types with theAny
suffix). - Renamed
texture::TextureType
toDimensions
. - Added
Context::get_opengl_version()
and deprecatedget_version()
.
- Buffers with persistent mapping now synchronize individual segments of the buffer instead of the buffer as a whole.
- Dynamic sized arrays are now properly handled by the introspection system.
- Added support for matrix shader attributes.
- Fixed the value of
depth_write
being ignored ifdepth_test
wasOverwrite
.
- Renamed and changed
UniformBlockMember
toBlockLayout
. - Added
map_read()
andmap_write()
to buffers. - Various bugfixes related to queries.
- Added a
implement_uniform_block!
macro for uniform buffers and SSBOs similar toimplement_vertex!
. - Added
UniformBuffer::empty
andUniformBuffer::empty_if_supported
. - Fixed sRGB being disabled when clearing before drawing for the first time.
- Fixed an OpenGL error if GL_ARB_robustness was present with OpenGL < 3.0.
- Now using the
GL_APPLE_SYNC
extension if OpenGL ES 3.0 is not available. - Now using the
GL_EXT_buffer_storage
extension on OpenGL ES if it is available. - Slightly improved performances when using a dynamic buffer.
- Added
GL_PROGRAM_POINT_SIZE
support toProgram
.
- Fixed the OpenGL compatibility check for SSBO reflection.
- Fixed a potential OpenGL error if uniform buffer objects are not supported.
- Fixed a potential OpenGL error if transform feedback buffers are not supported.
- Added
is_context_lost
,is_robust
andis_context_loss_possible
methods toContext
(callable through theDisplay
as well). - Fixed using a framebuffer with a depth or stencil attachment causing the wrong texture to be displayed.
- Fixed mipmaps generation with sRGB textures.
Frame::finish
now returns aResult
.Frame
's destructor will panic iffinish
has not been called.with_compressed_data
andwith_compressed_data_if_supported
now have an additional parameter for mipmaps.- All the texture constructors that used to take a boolean as parameter for mipmaps now takes an enum.
empty_with_format
andempty_with_format_if_supported
are now allowed for compressed textures.write
,write_compressed_data
,write_compressed_data_if_supported
andread_compressed_data
are now available for mipmap objects.- Removed the
is_closed()
function. - Removed the deprecated
render_buffer
module. - The
Backend::swap_buffers
function must now return aResult
.
- The panic at initialization in case of OpenGL error has been replaced by a warning.
- Added
with_compressed_data
,read_compressed_data
andwrite_compressed_data
to compressed texture types. - Fixed a panic at initialization on OS/X.
- Added the
LineLoop
primitive type. - Added the
smooth
draw parameters. - Fixed a potential
GL_INVALID_ENUM
error generated at initialization. - Glium will now panic if an OpenGL error is triggered during initialization.
- Fixed gamma correction with OpenGL ES.
- Fixed
get_internal_format_if_supported()
sometimes panicking. - Fixed a panic with a tessellation evaluation shader that outputs quads.
- Added support for compute shaders with the
program::ComputeShader
struct. - Can now bind a uniform buffer as a shader storage buffer.
- Added
Program::get_shader_storage_blocks()
to obtain the list of shader storage blocks. - The
Attribute
trait is now implemented on types from cgmath. - Now caching the actual format of a texture in case it is retrieved multiple times.
- Added
vertex::TransformFeedbackSession
andtransform_feedback
to the draw parameters. - Added
RenderBufferAny
. Render buffers now deref toRenderBufferAny
. - Deprecated
.into_vertex_buffer_any()
in favor of.into()
. - Added
.get_total_bits()
totexture::InternalFormat
. - Fixed values in uniform blocks being required to implement the
Default
trait. - Fixed buffer sometimes not always correctly unbound.
- Added
index::DrawCommandsNoIndicesBuffer
for multidraw indirect drawing. - Fixed a potential panic when using a buffer.
IndexBuffer
now takes the type of indices as template parameter.IndexBuffer
now derefs toBufferView
. Allows modifying the index buffer after it has been created.- Added
IndexBufferAny
. - Removed the
ToIndicesSource
andIntoIndexBuffer
traits. The former is replaced withInto<IndicesSource>
. PixelBuffer
now takes the type of pixels as template parameter.- Renamed
PixelBuffer::read
toPixelBuffer::read_as_texture_2d
. PixelBuffer
now derefs toBufferView
.- Added
BufferView::read_as_texture_1d
andBufferView::read_as_texture_1d_if_supported
. - Reworked
TextureDataSink
traits to take a precise format. - Fixed a panic when destroying a buffer with persistent mapping.
- Removed deprecated function
VertexBuffer::new_dynamic
. - It is now safe to call
mem::forget
on aMapping
object.
- Removed the
buffer::Builder
type as it was proven unsound. - Renamed
SubBuffer
toBufferView
. Display
/GlutinFacade
now derefs toContext
.- Mapping a buffer now simply calls
glMapBuffer
again, instead of writing to a temporary buffer. glutin
is now an optional dependency (enabled by default).- Creating an index buffer now correctly uses a
GL_ELEMENT_ARRAY_BUFFER
.
- Added a
buffer::Builder
type to build multiple sub-buffers within the same buffer. - Added an
invalidate
method to buffers. - Updated glutin to 0.1.6.
- Removed support for using indices in RAM.
IndexBuffer
,VertexBuffer
andUniformBuffer
now deref toSubBuffer
/SubBufferAny
.- Added a
get_internal_format_if_supported
method to textures. - Replaced the
IntoProgramCreationInput
trait withInto<ProgramCreationInput>
. - The
VertexFormat
type is now aCow<'static, []>
instead of aVec
. - Updated cgmath dependency to version 0.2.
- Added
AnySamplesPassedQuery
,PrimitivesGeneratedQuery
andTransformFeedbackPrimitivesWrittenQuery
, and corresponding fields inDrawParameters
. - The
samples_passed_query
draw parameter can now also take aAnySamplesPassedQuery
. - Added a
condition
parameter to the draw parameters, allowing you to use conditional rendering. - Textures now have a
sampled()
method to make it easier to create aSampler
. - Added a
color_mask
member to the draw parameters. - Added
per_instance
andper_instance_if_supported
toVertexBufferAny
.
- Added
SamplesPassedQuery
andTimeElapsedQuery
types. They can be passed to the draw parameters. - Buffers are no longer mapped with
GL_MAP_COHERENT_BIT
. Flushing is handled by glium. - Changed
Surface::clear
to take an additional optionalRect
parameter that specifies the rectangle to clear. - Fixed the
program!
macro not usable with version numbers >= 256. - Added support for
GL_OES_depth_texture
andGL_OES_packed_depth_stencil
. - Moved the content of the
render_buffer
module toframebuffer
.render_buffer
still exists but is deprecated.
- Glium now reexports glutin. You can access glutin with
glium::glutin
. - Fixed trying to retrieve uniform blocks on OpenGL ES 2.
- Added caching some uniform values in the
Program
struct to avoid calls toglUniform
. VertexBuffer::dynamic
andwrite
can now take a&[T]
as well as aVec<T>
.assert_no_error
now takes an optional user-defined string.- Fixed triggering an OpenGL error on initialization with non-compatibility contexts.
- Added a better texture units assignment system when drawing, in order to avoid some redundant state changes.
- Removed the
gl_persistent_mapping
feature. - Creating a dynamic buffer now creates a persistent mapped buffer automatically if supported.
- Creating a non-dynamic buffer now creates an immutable buffer. Modifying such a buffer is still possible but very expensive.
- Deprecated the
new_dynamic
function in favor ofdynamic
. - Fixed zero-sized textures triggering OpenGL errors.
- Added the possibility to add a debug string in the OpenGL commands queue.
- Added
vertex::EmptyVertexAttributes
andvertex::EmptyInstanceAttributes
markers in order to draw without a vertex source. - Added more formats in
CompressedFormats
andCompressedSrgbFormats
. - Fixed the
Mapping
objects not implementingSync
. - Fixed rendering to an sRGB texture not possible.
GliumCreationError
now has a template parameter indicating the backend creation error type.- The
DisplayBuild
trait has a new associated type indicating the error type. - Fixed the debug output callback not being disabled when compiling with --release.
- Fixed lifetime-related issues when using the
uniform!
macro.
- Changed the
slice()
functions to take aRange
instead of two parameters. - Added
SrgbTexture
andCompressedSrgbTexture
types. - Added
SrgbFormat
andCompressedSrgbFormat
enums. GL_FRAMEBUFFER_SRGB
is now enabled by default.
- Added a
program!
macro which builds a program. Glium chooses the right shaders depending on what the backend supports. - Added a
VertexBuffer::empty
method that creates a vertex buffer with uninitialized data. - Fixed drawing with offsets in vertex buffers different than 0 not permitted.
- Changed transform feedback reflection API to be compatible with what OpenGL 4.4 or ARB_enhanced_layouts allow.
VertexBuffer::new
can now take a slice as parameter.- Revert the fix for sRGB.
GL_FRAMEBUFFER_SRGB
is no longer enabled.
- Added support for backends that don't have vertex array objects (like OpenGL ES 2/WebGL).
- Glium now has basic support for OpenGL ES 2/WebGL.
- Added stencil operations in
DrawParameters
. - Fixed
GL_FRAMEBUFFER_SRGB
not being enabled, leading to different brightness depending on the target. - Fixed trailing commas not working in
implement_vertex!
anduniform!
.
- Creating a texture with a specific format now properly checks for available extensions.
- Removed
PerInstanceAttributesBuffer
andPerInstanceAttributesBufferAny
. - Added
per_instance
andper_instance_if_supported
toVertexBuffer
. - Removed the deprecated
index_buffer
module. Use theindex
module instead. - Fixed viewport dimensions on retina screens.
- The
Backend
trait is now marked unsafe.
- Added the
Backend
andFacade
traits.Display
implements theFacade
trait. - Changed all buffer/texture/etc. creation functions to take any type that implements
Facade
instead of aDisplay
. - Added
GlutinWindowBackend
andGlutinHeadlessBackend
that implement theBackend
trait. - Changed the private
Context
struct to be public. This allows users to implement theFacade
trait themselves. - Added an associated type to the
DisplayBuild
trait. - Fixed scissor boxing not being disabled before a blit.
- Fixed a memory leak with vertex array objects.
- Fixed an issue where you couldn't reuse the same uniform values created with
uniform!
multiple times.
- Added
ToColorAttachment
trait implementation forTexture2dMultisample
. - Added
Texture2dMultisample::as_surface
method. - Updated the crate for the new I/O.
- Changed
VertexFormat
to take aCow<'static, str>
instead of aString
. - Fixed a stack overflow in release mode.
- Removed the
fence
argument from vertices, indices and uniforms sources. Fences are now directly gathered from buffers when drawing.