TINYGL: Fixed a few mistakes during the refactoring.

This commit is contained in:
Stefano Musumeci 2014-05-30 00:01:54 +01:00
parent c1040a9cdf
commit b7853b48f8
7 changed files with 135 additions and 87 deletions

View file

@ -69,7 +69,7 @@ void glopMultMatrix(GLContext *c, GLParam *p) {
q += 4;
}
*c->matrix_stack_ptr[c->matrix_mode] = (*c->matrix_stack_ptr[c->matrix_mode]) * m; // NOTE: verify this, I'm not 100% sure.
*c->matrix_stack_ptr[c->matrix_mode] = (*c->matrix_stack_ptr[c->matrix_mode]) * m;
gl_matrix_update(c);
}
@ -171,29 +171,28 @@ void glopRotate(GLContext *c, GLParam *p) {
}
void glopScale(GLContext *c, GLParam *p) {
Matrix4 *m;
float x = p[1].f, y = p[2].f, z = p[3].f;
m = c->matrix_stack_ptr[c->matrix_mode];
Matrix4 m = Matrix4::identity();
m.set(0,0,x);
m.set(1,1,y);
m.set(2,2,z);
*c->matrix_stack_ptr[c->matrix_mode] = (*c->matrix_stack_ptr[c->matrix_mode]) * m;
for(int i = 0; i < 4; i++) {
m->set(0,i, m->get(0,i) * x);
m->set(1,i, m->get(1,i) * y);
m->set(2,i, m->get(2,i) * z);
}
gl_matrix_update(c);
}
void glopTranslate(GLContext *c, GLParam *p) {
Matrix4 *m;
Matrix4 m = Matrix4::identity();
float x = p[1].f, y = p[2].f, z = p[3].f;
m = c->matrix_stack_ptr[c->matrix_mode];
m.set(3,0,x);
m.set(3,1,y);
m.set(3,2,z);
m->set(3,0, m->get(0,0) * x + m->get(1,0) * y + m->get(2,0) * z + m->get(3,0));
m->set(3,1, m->get(0,1) * x + m->get(1,1) * y + m->get(2,1) * z + m->get(3,1));
m->set(3,2, m->get(0,2) * x + m->get(1,2) * y + m->get(2,2) * z + m->get(3,2));
m->set(3,3, m->get(0,3) * x + m->get(1,3) * y + m->get(2,3) * z + m->get(3,3));
*c->matrix_stack_ptr[c->matrix_mode] = (*c->matrix_stack_ptr[c->matrix_mode]) * m;
gl_matrix_update(c);
}
@ -216,9 +215,9 @@ void glopFrustum(GLContext *c, GLParam *p) {
D = (float)(-(2.0 * farp * nearp) / (farp - nearp));
m.set(0,0, x); m.set(1,0, 0); m.set(2,0, A); m.set(3,0, 0);
m.set(0,1, x); m.set(1,1, y); m.set(2,1, B); m.set(3,1, 0);
m.set(0,2, x); m.set(1,2, 0); m.set(2,2, C); m.set(3,2, D);
m.set(0,3, x); m.set(1,3, 0); m.set(2,3, -1); m.set(3,3, 0);
m.set(0,1, 0); m.set(1,1, y); m.set(2,1, B); m.set(3,1, 0);
m.set(0,2, 0); m.set(1,2, 0); m.set(2,2, C); m.set(3,2, D);
m.set(0,3, 0); m.set(1,3, 0); m.set(2,3, -1); m.set(3,3, 0);
*c->matrix_stack_ptr[c->matrix_mode] = (*c->matrix_stack_ptr[c->matrix_mode]) * m;