diff --git a/glslUtil/Makefile b/glslUtil/Makefile new file mode 100644 index 0000000..c5213ff --- /dev/null +++ b/glslUtil/Makefile @@ -0,0 +1,10 @@ +export SCONSFLAGS := -Q + +all: + @scons + +install: + @scons $@ + +clean: + @scons -c diff --git a/glslUtil/SConstruct b/glslUtil/SConstruct new file mode 100644 index 0000000..cef95c3 --- /dev/null +++ b/glslUtil/SConstruct @@ -0,0 +1,4 @@ +# vim:filetype=python + +env = Environment() +env.Object('glslUtil.o', 'glslUtil.c') diff --git a/glslUtil/glslUtil.c b/glslUtil/glslUtil.c index c1ab190..959b93a 100644 --- a/glslUtil/glslUtil.c +++ b/glslUtil/glslUtil.c @@ -1,38 +1,48 @@ +#include #include "glslUtil.h" void guMatrixLoadIdentity(guMatrix4x4 *m) { - for (int i = 0; i < 4; i++) + int i, j; + for (i = 0; i < 4; i++) { - for (int j = 0; j < 4; j++) + for (j = 0; j < 4; j++) { - m[i][j] = (i == j) ? 1.0 : 0.0; + (*m)[i][j] = (i == j) ? 1.0 : 0.0; } } } void guMatrixMult(guMatrix4x4 *m, guMatrix4x4 *a, guMatrix4x4 *b) { - for (int i = 0; i < 4; i++) + guMatrix4x4 tmp; + int i, j, p; + if (m == a) { - for (int j = 0; j < 4; j++) + memcpy(&tmp, a, sizeof(tmp)); + a = &tmp; + } + for (i = 0; i < 4; i++) + { + for (j = 0; j < 4; j++) { float v = 0.0; - for (int p = 0; p < 4; p++) + for (p = 0; p < 4; p++) { - v += a[i][p] * b[p][j]; + v += (*a)[i][p] * (*b)[p][j]; } - m[i][j] = v; + (*m)[i][j] = v; } } } void guMatrixTranslate(guMatrix4x4 *m, float x, float y, float z) { - for (int i = 0; i < 4; i++) + int i; + for (i = 0; i < 4; i++) { - m[i][3] += m[i][0] * x + m[i][1] * y + m[i][2] * z; + (*m)[i][3] += (*m)[i][0] * x + (*m)[i][1] * y + (*m)[i][2] * z; } } @@ -41,10 +51,11 @@ void guMatrixFrustum(guMatrix4x4 *m, float bottom, float top, float near, float far) { + int i, j; guMatrix4x4 mult; - for (int i = 0; i < 4; i++) + for (i = 0; i < 4; i++) { - for (int j = 0; j < 4; j++) + for (j = 0; j < 4; j++) { mult[i][j] = 0.0; } @@ -56,5 +67,5 @@ void guMatrixFrustum(guMatrix4x4 *m, mult[2][2] = - (far + near) / (far - near); mult[2][3] = - 2 * far * near / (far - near); mult[3][2] = -1.0; - guMatrixMult(m, &mult); + guMatrixMult(m, m, &mult); }