6

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.

AJM
  • 655
  • 1
  • 9
  • 19

1 Answers1

7

That should do it:

glUniformMatrix4fv(projectionU, 1, GL_FALSE, &projection.data()[0]);
Ivan Baldin
  • 3,391
  • 3
  • 22
  • 14