2 #ifndef KJY_OBJECT_ORIENTED_OPENGL_COMMON_H_ 3 #define KJY_OBJECT_ORIENTED_OPENGL_COMMON_H_ 7 #define MAX(_A, _B) ((_A) > (_B) ? (_A) : (_B)) 8 #define MIN(_A, _B) ((_A) < (_B) ? (_A) : (_B)) 9 #define CLAMP(_A, _MIN, _MAX) ( _A > _MAX ? (_MAX) : (_A < _MIN ? (_MIN) : (_A) ) ) 10 #define FNOT(_F) (1.0f - (_F)) 13 #define _STRIFY(_PD) #_PD 14 #define STRIFY(_PD) _STRIFY(_PD) 17 #define PING() {fprintf(stderr,"PING! (%d:%s)\n",__LINE__,__FILE__);} 19 #define _GLERR_SWITCH \ 22 fprintf(stderr, "'Invalid OpenGL enum was passed to function.\n'");\ 25 fprintf(stderr, "'Invalid value was passed to an OpenGL function.\n'");\ 28 fprintf(stderr, "'Invalid operation error, the OpenGL state conflicted with a command.\n'");\ 31 fprintf(stderr, "'OpenGL stack overflow.\n'");\ 34 fprintf(stderr, "'OpenGL stack underflow.\n'");\ 37 fprintf(stderr, "'OpenGL out of memory error!\n'");\ 40 fprintf(stderr, "'Invalid framebuffer operation!\n'");\ 43 fprintf(stderr, "'The OpenGL context was lost!\n'");\ 48 #define ASSERT_NO_GLERR() {\ 49 GLenum __glErr__ = glGetError();\ 50 if(__glErr__ != GL_NO_ERROR){\ 51 fprintf(stderr, "OpenGL Error caught on %s:%i\n", __FILE__, __LINE__);\ 53 assert(__glErr__ == GL_NO_ERROR);\ 57 #define ASSERT_NO_GLERR_NOTE(_CALL) {\ 58 GLenum __glErr__ = glGetError();\ 59 if(__glErr__ != GL_NO_ERROR){\ 60 fprintf(stderr, "OpenGL Error caught on %s:%i for call:\n", __FILE__, __LINE__);\ 61 fprintf(stderr, " '%s'\n", "" STRIFY((_CALL)) "" );\ 63 assert(__glErr__ == GL_NO_ERROR);\ 67 #define _CHECK_BEFORE() {\ 68 GLenum __glErr__ = glGetError();\ 69 if(__glErr__ != GL_NO_ERROR){\ 70 fprintf(stderr, "OpenGL Error caught before %s:%i\n", __FILE__, __LINE__);\ 72 assert(__glErr__ == GL_NO_ERROR);\ 76 #define CHECKED_GL_CALL(_CALL) _CHECK_BEFORE(); (_CALL); ASSERT_NO_GLERR_NOTE(_CALL) 79 #ifndef OOOGL_CONDITIONAL_CHECKS 80 #define CONDITIONALLY_CHECKED_GL_CALL(_CALL) (_CALL) 81 #define CONDITIONALLY_ASSERT_NO_GLERR() ((void)0) 83 #define CONDITIONALLY_CHECKED_GL_CALL(_CALL) CHECKED_GL_CALL(_CALL) 84 #define CONDITIONALLY_ASSERT_NO_GLERR() ASSERT_NO_GLERR() 90 typedef unsigned UINT;
91 typedef unsigned long ULONG;
92 typedef ULONG *PULONG;
93 typedef unsigned short USHORT;
94 typedef USHORT *PUSHORT;
95 typedef unsigned char UCHAR;
96 typedef UCHAR *PUCHAR;