crystal_api/
lib.rs

1#![warn(missing_docs)]
2#![warn(unreachable_pub)]
3
4//! # Crystal API
5//! Crystal API is a unified wrapper for GPU APIs
6//!
7//!
8mod debug;
9/// Errors module
10pub mod errors;
11mod gpu_data;
12/// Mesh module
13pub mod mesh;
14/// Object module
15pub mod object;
16/// Settings module
17pub mod settings;
18mod shader;
19mod traits;
20mod vulkan;
21
22use std::sync::Arc;
23
24pub use gpu_data::*;
25use raw_window_handle::{HasDisplayHandle, HasWindowHandle};
26pub use settings::GraphicsApiInitSettings;
27pub use shader::{Shader, ShaderStage};
28pub use traits::*;
29
30use crate::{errors::GraphicsResult, vulkan::VulkanEntry};
31
32/// Creates api instance with presentation support
33/// ```rust
34/// let graphics = init_api_instance_with_presentation(&self.settings, &window)
35///     .expect("cannot create entry");
36/// ```
37pub fn init_api_instance_with_presentation<T: HasWindowHandle + HasDisplayHandle>(
38    settings: &GraphicsApiInitSettings,
39    window: &T,
40) -> GraphicsResult<Arc<dyn traits::GraphicsApi>> {
41    VulkanEntry::with_presentation(settings, window)
42}