Skip to main content

ferroui_opengl/
lib.rs

1//! The OpenGL platform contracts.
2//!
3//! What a platform exposes so that a render backend can draw with OpenGL,
4//! OpenGL ES or WebGL: the context ([`IGlContext`]), the surfaces it renders
5//! to ([`surfaces`]) and the entry points the framework itself calls
6//! ([`GlInterface`]).
7//!
8//! The entry point tables call into the platform's OpenGL library through
9//! function pointers resolved by name. That is the one place of this crate
10//! with `unsafe` code; see [`GlInterface`] for the contract.
11
12pub mod composition;
13pub mod controls;
14pub mod egl;
15pub mod features;
16pub mod gl_consts;
17pub mod surfaces;
18
19mod entry_points;
20mod gl_basic_info_interface;
21mod gl_entry_point_attribute;
22mod gl_errors;
23mod gl_interface;
24mod gl_version;
25mod i_gl_context;
26mod i_gl_context_external_objects_feature;
27mod i_open_gl_texture_sharing_render_interface_context_feature;
28mod i_platform_graphics_open_gl_context_factory;
29mod open_gl_exception;
30mod register_types;
31mod rust_paths;
32
33pub use entry_points::GetProcAddress;
34pub use gl_basic_info_interface::GlBasicInfoInterface;
35pub use gl_entry_point_attribute::{GlExtensionEntryPoint, GlMinVersionEntryPoint};
36pub use gl_errors::GlErrors;
37pub use gl_interface::{GlContextInfo, GlInterface};
38pub use gl_version::{GlProfileType, GlVersion};
39pub use i_gl_context::{IGlContext, IGlPlatformSurfaceRenderTargetFactory};
40pub use i_gl_context_external_objects_feature::{
41    IGlContextExternalObjectsFeature, IGlExportableExternalImageTexture, IGlExportableExternalSemaphore,
42    IGlExternalImageTexture, IGlExternalSemaphore,
43};
44pub use i_open_gl_texture_sharing_render_interface_context_feature::{
45    ICompositionImportableOpenGlSharedTexture, IOpenGlTextureSharingRenderInterfaceContextFeature,
46};
47pub use i_platform_graphics_open_gl_context_factory::IPlatformGraphicsOpenGlContextFactory;
48pub use open_gl_exception::OpenGlException;
49pub use register_types::{register_types, ASSEMBLY};
50
51#[cfg(test)]
52mod testing;