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 designed for the best capability
6//! with any solutions in apps development
7
8/// Debug module
9pub mod debug;
10/// Errors module
11pub mod errors;
12mod gpu_data;
13/// Mesh module
14pub mod mesh;
15/// Object module
16pub mod object;
17/// Settings module
18pub mod settings;
19mod shader;
20mod traits;
21mod vulkan;
22
23use std::sync::Arc;
24
25pub use gpu_data::*;
26use raw_window_handle::{HasDisplayHandle, HasWindowHandle};
27pub use settings::GraphicsApiInitSettings;
28pub use shader::{Shader, ShaderStage};
29pub use traits::*;
30
31use crate::{errors::GraphicsResult, vulkan::VulkanEntry};
32
33/// Creates api instance with presentation support
34/// ```rust
35/// let graphics = init_api_instance_with_presentation(&self.settings, &window)
36///     .expect("cannot create entry");
37/// ```
38pub fn init_api_instance_with_presentation<T: HasWindowHandle + HasDisplayHandle>(
39    settings: &GraphicsApiInitSettings,
40    window: &T,
41) -> GraphicsResult<Arc<dyn traits::GraphicsApi>> {
42    VulkanEntry::with_presentation(settings, window)
43}
44
45/// Creates api instance for compute operations
46/// ```rust
47/// let graphics = init_api_instance().expect("cannot create entry");
48/// ```
49pub fn init_api_instance() -> GraphicsResult<Arc<dyn traits::GraphicsApi>> {
50    VulkanEntry::no_presentation()
51}