1#[derive(thiserror::Error, Debug)]
3pub enum Error {
4 #[error("Shader error: {0}")]
6 Shader(String),
7
8 #[error("Resource error: {0}")]
10 Resource(String),
11
12 #[error("Data error: {0}")]
14 Data(String),
15}
16
17impl Error {
18 pub(crate) fn shader_creation_failed(detail: &str) -> Self {
20 Self::Shader(format!("Shader creation failed: {detail}"))
21 }
22
23 pub(crate) fn shader_program_creation_failed(detail: impl std::fmt::Display) -> Self {
24 Self::Shader(format!("Shader program creation failed: {detail}"))
25 }
26
27 pub(crate) fn shader_compilation_failed(stage: impl std::fmt::Display, log: String) -> Self {
28 Self::Shader(format!("{stage} shader compilation failed: {log}"))
29 }
30
31 pub(crate) fn shader_link_failed(log: String) -> Self {
32 Self::Shader(format!("Shader linking failed: {log}"))
33 }
34
35 pub(crate) fn buffer_creation_failed(
37 buffer_type: &str,
38 detail: impl std::fmt::Display,
39 ) -> Self {
40 Self::Resource(format!("Failed to create {buffer_type} buffer: {detail}"))
41 }
42
43 pub(crate) fn vertex_array_creation_failed(detail: impl std::fmt::Display) -> Self {
44 Self::Resource(format!("Failed to create vertex array object: {detail}"))
45 }
46
47 pub(crate) fn texture_creation_failed(detail: impl std::fmt::Display) -> Self {
48 Self::Resource(format!("Failed to create texture: {detail}"))
49 }
50
51 pub(crate) fn uniform_location_failed(name: &str) -> Self {
52 Self::Resource(format!("Failed to get uniform location: {name}"))
53 }
54}