dungeon_crawler
annotate prototype/src/opengl.cc @ 18:5c41e6fcb300
- commandline arguments
- stereoscopic rendering
- FBO fixed
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Tue, 21 Aug 2012 03:17:48 +0300 |
parents | 8fb37db44fd8 |
children |
rev | line source |
---|---|
nuclear@7 | 1 #include "opengl.h" |
nuclear@7 | 2 #include "vmath.h" |
nuclear@7 | 3 |
nuclear@7 | 4 void load_matrix(const Matrix4x4 &m) |
nuclear@7 | 5 { |
nuclear@7 | 6 #ifdef SINGLE_PRECISION_MATH |
nuclear@7 | 7 if(glLoadTransposeMatrixfARB) { |
nuclear@7 | 8 glLoadTransposeMatrixfARB((float*)&m); |
nuclear@7 | 9 } else { |
nuclear@7 | 10 Matrix4x4 tmat = m.transposed(); |
nuclear@7 | 11 glLoadMatrixf((float*)&tmat); |
nuclear@7 | 12 } |
nuclear@7 | 13 #else |
nuclear@7 | 14 if(glLoadTransposeMatrixdARB) { |
nuclear@7 | 15 glLoadTransposeMatrixdARB((double*)&m); |
nuclear@7 | 16 } else { |
nuclear@7 | 17 Matrix4x4 tmat = m.transposed(); |
nuclear@7 | 18 glLoadMatrixd((double*)&tmat); |
nuclear@7 | 19 } |
nuclear@7 | 20 #endif |
nuclear@7 | 21 } |
nuclear@7 | 22 |
nuclear@7 | 23 void mult_matrix(const Matrix4x4 &m) |
nuclear@7 | 24 { |
nuclear@7 | 25 #ifdef SINGLE_PRECISION_MATH |
nuclear@7 | 26 if(glMultTransposeMatrixfARB) { |
nuclear@7 | 27 glMultTransposeMatrixfARB((float*)&m); |
nuclear@7 | 28 } else { |
nuclear@7 | 29 Matrix4x4 tmat = m.transposed(); |
nuclear@7 | 30 glMultMatrixf((float*)&tmat); |
nuclear@7 | 31 } |
nuclear@7 | 32 #else |
nuclear@7 | 33 if(glMultTransposeMatrixdARB) { |
nuclear@7 | 34 glMultTransposeMatrixdARB((double*)&m); |
nuclear@7 | 35 } else { |
nuclear@7 | 36 Matrix4x4 tmat = m.transposed(); |
nuclear@7 | 37 glMultMatrixd((double*)&tmat); |
nuclear@7 | 38 } |
nuclear@7 | 39 #endif |
nuclear@7 | 40 } |
nuclear@18 | 41 |
nuclear@18 | 42 const char *strglerr(int err) |
nuclear@18 | 43 { |
nuclear@18 | 44 static const char *errnames[] = { |
nuclear@18 | 45 "GL_INVALID_ENUM", |
nuclear@18 | 46 "GL_INVALID_VALUE", |
nuclear@18 | 47 "GL_INVALID_OPERATION", |
nuclear@18 | 48 "GL_STACK_OVERFLOW", |
nuclear@18 | 49 "GL_STACK_UNDERFLOW", |
nuclear@18 | 50 "GL_OUT_OF_MEMORY", |
nuclear@18 | 51 "GL_INVALID_FRAMEBUFFER_OPERATION" |
nuclear@18 | 52 }; |
nuclear@18 | 53 |
nuclear@18 | 54 if(!err) { |
nuclear@18 | 55 return "GL_NO_ERROR"; |
nuclear@18 | 56 } |
nuclear@18 | 57 if(err < GL_INVALID_ENUM || err > GL_OUT_OF_MEMORY) { |
nuclear@18 | 58 return "<invalid gl error>"; |
nuclear@18 | 59 } |
nuclear@18 | 60 return errnames[err - GL_INVALID_ENUM]; |
nuclear@18 | 61 } |