(bind-func gl_print_error_with_msg
(lambda (msg:i8*)
(let ((err (glGetError)))
(cond
((= err GL_INVALID_ENUM)
(printf "%s: Invalid Enum\n" msg))
((= err GL_INVALID_VALUE)
(printf "%s: Invalid Value\n" msg))
((= err GL_INVALID_OPERATION)
(printf "%s: Invalid Operation\n" msg))
((= err GL_STACK_OVERFLOW)
(printf "%s: Stack Underflow\n" msg))
((= err GL_STACK_UNDERFLOW)
(printf "%s: Stack Overflow\n" msg))
((= err GL_OUT_OF_MEMORY)
(printf "%s: Out Of Memory\n" msg))
;((= err GL_INVALID_FRAMEBUFFER_OPERATION)
; (printf "%s: Invalid Framebuffer Operation\n" msg))
((= err GL_TABLE_TOO_LARGE)
(printf "%s: Table Too Large\n" msg))
((= err GL_NO_ERROR)
1:i32)
(else
(printf "%s\n" msg)))
void)))