8 fprintf(stderr,
"%f %f %f %f\n", m[i], m[4+i], m[8+i], m[12+i] );
12static inline void gl_matrix_update(
GLContext *c)
119 angle = p[1].
f *
M_PI / 180.0;
125 dir_code = ((u[0] != 0)<<2) | ((u[1] != 0)<<1) | (u[2] != 0);
132 if (u[0] < 0) angle=-angle;
136 if (u[1] < 0) angle=-angle;
140 if (u[2] < 0) angle=-angle;
148 float len = u[0]*u[0]+u[1]*u[1]+u[2]*u[2];
149 if (len == 0.0f)
return;
150 len = 1.0f / sqrt(len);
160 m.
m[3][0]=m.
m[3][1]=m.
m[3][2]=
161 m.
m[0][3]=m.
m[1][3]=m.
m[2][3]=0.0f;
165 m.
m[0][0]=u[0]*u[0]+cost*(1-u[0]*u[0]);
166 m.
m[1][0]=u[0]*u[1]*(1-cost)-u[2]*sint;
167 m.
m[2][0]=u[2]*u[0]*(1-cost)+u[1]*sint;
168 m.
m[0][1]=u[0]*u[1]*(1-cost)+u[2]*sint;
169 m.
m[1][1]=u[1]*u[1]+cost*(1-u[1]*u[1]);
170 m.
m[2][1]=u[1]*u[2]*(1-cost)-u[0]*sint;
171 m.
m[0][2]=u[2]*u[0]*(1-cost)-u[1]*sint;
172 m.
m[1][2]=u[1]*u[2]*(1-cost)+u[0]*sint;
173 m.
m[2][2]=u[2]*u[2]+cost*(1-u[2]*u[2]);
185 float x=p[1].
f,y=p[2].
f,z=p[3].
f;
189 m[0] *= x; m[1] *= y; m[2] *= z;
190 m[4] *= x; m[5] *= y; m[6] *= z;
191 m[8] *= x; m[9] *= y; m[10] *= z;
192 m[12] *= x; m[13] *= y; m[14] *= z;
199 float x=p[1].
f,y=p[2].
f,z=p[3].
f;
203 m[3] = m[0] * x + m[1] * y + m[2] * z + m[3];
204 m[7] = m[4] * x + m[5] * y + m[6] * z + m[7];
205 m[11] = m[8] * x + m[9] * y + m[10] * z + m[11];
206 m[15] = m[12] * x + m[13] * y + m[14] * z + m[15];
224 x = (2.0*near) / (right-left);
225 y = (2.0*near) / (top-bottom);
226 A = (right+left) / (right-left);
227 B = (top+bottom) / (top-bottom);
228 C = -(farp+near) / ( farp-near);
229 D = -(2.0*farp*near) / (farp-near);
232 r[0]= x; r[1]=0; r[2]=A; r[3]=0;
233 r[4]= 0; r[5]=y; r[6]=B; r[7]=0;
234 r[8]= 0; r[9]=0; r[10]=C; r[11]=D;
235 r[12]= 0; r[13]=0; r[14]=-1; r[15]=0;
void glopScale(GLContext *c, GLParam *p)
void glopFrustum(GLContext *c, GLParam *p)
void glopMultMatrix(GLContext *c, GLParam *p)
void glopTranslate(GLContext *c, GLParam *p)
void glopRotate(GLContext *c, GLParam *p)
void glopLoadIdentity(GLContext *c, GLParam *p)
void glopMatrixMode(GLContext *c, GLParam *p)
void glopPushMatrix(GLContext *c, GLParam *p)
void gl_print_matrix(const float *m)
void glopLoadMatrix(GLContext *c, GLParam *p)
void glopPopMatrix(GLContext *c, GLParam *p)
int matrix_model_projection_updated
int matrix_stack_depth_max[3]
void gl_M4_Rotate(M4 *a, float t, int u)
void gl_M4_MulLeft(M4 *c, M4 *b)
void gl_M4_Move(M4 *a, M4 *b)