views:

136

answers:

1

I'm writing an OpenGL program where I compute my own matrices and pass them to shaders. I want to use Boost's uBLAS library for the matrices, but I have little idea how to get a uBLAS matrix into OpenGL's shader uniform functions.

matrix<GLfloat, column_major> projection(4, 4);
// Fill matrix
...

GLuint projectionU = glGetUniformLocation(shaderProgram, "projection");
glUniformMatrix4fv(projectionU, 1, 0, (GLfloat *)... Um ...);

Trying to cast the matrix to a GLfloat pointer causes an invalid cast error on compile.

+4  A: 

That should do it:

glUniformMatrix4fv(projectionU, 1, GL_FALSE, &projection.data()[0]);
Ivan Baldin