nuclear@0: #include "opengl.h" nuclear@0: #include nuclear@0: nuclear@0: void load_matrix(const Matrix4x4 &m) nuclear@0: { nuclear@0: #ifdef SINGLE_PRECISION_MATH nuclear@0: if(glLoadTransposeMatrixfARB) { nuclear@0: glLoadTransposeMatrixfARB((float*)&m); nuclear@0: } else { nuclear@0: Matrix4x4 tmat = m.transposed(); nuclear@0: glLoadMatrixf((float*)&tmat); nuclear@0: } nuclear@0: #else nuclear@0: if(glLoadTransposeMatrixdARB) { nuclear@0: glLoadTransposeMatrixdARB((double*)&m); nuclear@0: } else { nuclear@0: Matrix4x4 tmat = m.transposed(); nuclear@0: glLoadMatrixd((double*)&tmat); nuclear@0: } nuclear@0: #endif nuclear@0: } nuclear@0: nuclear@0: void mult_matrix(const Matrix4x4 &m) nuclear@0: { nuclear@0: #ifdef SINGLE_PRECISION_MATH nuclear@0: if(glMultTransposeMatrixfARB) { nuclear@0: glMultTransposeMatrixfARB((float*)&m); nuclear@0: } else { nuclear@0: Matrix4x4 tmat = m.transposed(); nuclear@0: glMultMatrixf((float*)&tmat); nuclear@0: } nuclear@0: #else nuclear@0: if(glMultTransposeMatrixdARB) { nuclear@0: glMultTransposeMatrixdARB((double*)&m); nuclear@0: } else { nuclear@0: Matrix4x4 tmat = m.transposed(); nuclear@0: glMultMatrixd((double*)&tmat); nuclear@0: } nuclear@0: #endif nuclear@0: } nuclear@0: nuclear@0: const char *strglerr(int err) nuclear@0: { nuclear@0: static const char *errnames[] = { nuclear@0: "GL_INVALID_ENUM", nuclear@0: "GL_INVALID_VALUE", nuclear@0: "GL_INVALID_OPERATION", nuclear@0: "GL_STACK_OVERFLOW", nuclear@0: "GL_STACK_UNDERFLOW", nuclear@0: "GL_OUT_OF_MEMORY", nuclear@0: "GL_INVALID_FRAMEBUFFER_OPERATION" nuclear@0: }; nuclear@0: nuclear@0: if(!err) { nuclear@0: return "GL_NO_ERROR"; nuclear@0: } nuclear@0: if(err < GL_INVALID_ENUM || err > GL_OUT_OF_MEMORY) { nuclear@0: return ""; nuclear@0: } nuclear@0: return errnames[err - GL_INVALID_ENUM]; nuclear@0: }