1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
use super::*; error_chain! { errors { InvalidEnum InvalidValue InvalidOperation StackOverflow StackUnderflow OutOfMemory InvalidFramebufferOperation ContextLost UnknownError } } pub fn get_error<T>(t: T) -> Result<T> { if cfg!(debug_assertions) { unsafe { let error_code: u32 = gl::GetError(); use self::ErrorKind::*; match error_code { gl::INVALID_ENUM => Err(InvalidEnum.into()), gl::INVALID_VALUE => Err(InvalidValue.into()), gl::INVALID_OPERATION => Err(InvalidOperation.into()), gl::STACK_OVERFLOW => Err(StackOverflow.into()), gl::STACK_UNDERFLOW => Err(StackUnderflow.into()), gl::OUT_OF_MEMORY => Err(OutOfMemory.into()), gl::INVALID_FRAMEBUFFER_OPERATION => Err(InvalidFramebufferOperation.into()), gl::CONTEXT_LOST => Err(ContextLost.into()), gl::NO_ERROR => Ok(t), _ => Err(UnknownError.into()), } } } else { Ok(t) } } pub fn get_error_always() -> Result<()> { unsafe { let error_code: u32 = gl::GetError(); use self::ErrorKind::*; match error_code { gl::INVALID_ENUM => Err(InvalidEnum.into()), gl::INVALID_VALUE => Err(InvalidValue.into()), gl::INVALID_OPERATION => Err(InvalidOperation.into()), gl::STACK_OVERFLOW => Err(StackOverflow.into()), gl::STACK_UNDERFLOW => Err(StackUnderflow.into()), gl::OUT_OF_MEMORY => Err(OutOfMemory.into()), gl::INVALID_FRAMEBUFFER_OPERATION => Err(InvalidFramebufferOperation.into()), gl::CONTEXT_LOST => Err(ContextLost.into()), gl::NO_ERROR => Ok(()), _ => Err(UnknownError.into()), } } }