22 #define M_PI 3.14159265358979323846 26 #define ALGL_NOCONV(x) x 28 #define TRANSLATE_AL_TO_GL(al_type, gl_type, convertor) \ 29 void allegro_gl_##al_type##_to_##gl_type (al_type *m, gl_type gl[16]) \ 32 for (col = 0; col < 3; col++) \ 33 for (row = 0; row < 3; row++) \ 34 gl[col*4+row] = convertor (m->v[col][row]); \ 35 for (row = 0; row < 3; row++) \ 36 gl[12+row] = convertor (m->t[row]); \ 37 for (col = 0; col < 3; col++) \ 66 TRANSLATE_AL_TO_GL(MATRIX, GLfloat, fixtof)
82 TRANSLATE_AL_TO_GL(MATRIX, GLdouble, fixtof)
98 TRANSLATE_AL_TO_GL(MATRIX_f, GLfloat, ALGL_NOCONV)
114 TRANSLATE_AL_TO_GL(MATRIX_f, GLdouble, ALGL_NOCONV)
118 #define TRANSLATE_GL_TO_AL(gl_type, al_type, convertor) \ 119 void allegro_gl_##gl_type##_to_##al_type (gl_type gl[16], al_type *m) \ 122 for (col = 0; col < 3; col++) \ 123 for (row = 0; row < 3; row++) \ 124 m->v[col][row] = convertor (gl[col*4+row]); \ 125 for (row = 0; row < 3; row++) \ 126 m->t[row] = convertor (gl[12+row]); \ 143 TRANSLATE_GL_TO_AL(GLfloat, MATRIX, ftofix)
159 TRANSLATE_GL_TO_AL(GLdouble, MATRIX, ftofix)
175 TRANSLATE_GL_TO_AL(GLfloat, MATRIX_f, ALGL_NOCONV)
192 TRANSLATE_GL_TO_AL(GLdouble, MATRIX_f, ALGL_NOCONV)
199 #define RAD_2_DEG(a) ((a) * 180 / M_PI) 226 ASSERT(__allegro_gl_valid_context);
228 theta = RAD_2_DEG(2 * acos(q->w));
229 if (q->w < 1.0f && q->w > -1.0f)
230 glRotatef(theta, q->x, q->y, q->z);
266 *angle = RAD_2_DEG(2 * acos(q->w));
298 *angle = RAD_2_DEG(2 * acos(q->w));
void allegro_gl_apply_quat(QUAT *q)
Converts a quaternion to a vector/angle, which can be used with glRotate*().
void allegro_gl_quat_to_glrotatef(QUAT *q, float *angle, float *x, float *y, float *z)
Converts a quaternion to a vector/angle, which can be used with glRotate*().
Main header file for AllegroGL.
void allegro_gl_quat_to_glrotated(QUAT *q, double *angle, double *x, double *y, double *z)
Converts a quaternion to a vector/angle, which can be used with glRotate*().