Skip to content

Instantly share code, notes, and snippets.

@ozkriff
Created April 17, 2014 08:20
Show Gist options
  • Save ozkriff/10964107 to your computer and use it in GitHub Desktop.
Save ozkriff/10964107 to your computer and use it in GitHub Desktop.
macro_rules! verify(
($e: expr) => ({
let result = $e;
let error_code = gl::GetError();
if error_code != 0 {
let description = match error_code {
gl::INVALID_ENUM => "GL_INVALID_ENUM",
gl::INVALID_FRAMEBUFFER_OPERATION => "GL_INVALID_FRAMEBUFFER_OPERATION",
gl::INVALID_OPERATION => "GL_INVALID_OPERATION",
gl::INVALID_VALUE => "GL_INVALID_VALUE",
gl::NO_ERROR => "GL_NO_ERROR",
gl::OUT_OF_MEMORY => "GL_OUT_OF_MEMORY",
_ => fail!("Bad gl error code: {}", error_code),
};
fail!("gl error: {}({})", description, error_code);
}
result
})
)
/*
Could be autogenerated from
...
<group name="ErrorCode">
<enum name="GL_INVALID_ENUM"/>
<enum name="GL_INVALID_FRAMEBUFFER_OPERATION"/>
<enum name="GL_INVALID_FRAMEBUFFER_OPERATION_EXT"/>
<enum name="GL_INVALID_FRAMEBUFFER_OPERATION_OES"/>
<enum name="GL_INVALID_OPERATION"/>
<enum name="GL_INVALID_VALUE"/>
<enum name="GL_NO_ERROR"/>
<enum name="GL_OUT_OF_MEMORY"/>
<enum name="GL_STACK_OVERFLOW"/>
<enum name="GL_STACK_UNDERFLOW"/>
<enum name="GL_TABLE_TOO_LARGE"/>
<enum name="GL_TABLE_TOO_LARGE_EXT"/>
<enum name="GL_TEXTURE_TOO_LARGE_EXT"/>
</group>
...
in https://github.com/scoopr/khronos-api/blob/master/gl.xml
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment