2010-06-09 5 views
6

J'écris un programme OpenGL dans lequel je calcule mes propres matrices et les transmet aux shaders. Je veux utiliser la bibliothèque uBLAS de Boost pour les matrices, mais je ne sais pas comment obtenir une matrice UBLAS dans les fonctions d'ombrage d'OpenGL.Passer les matrices uBLAS dans le shader OpenGL

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

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

Si vous tentez de transformer la matrice en un pointeur GLfloat, une erreur de distribution non valide est générée lors de la compilation.

Répondre

7

Cela devrait le faire:

glUniformMatrix4fv(projectionU, 1, GL_FALSE, &projection.data()[0]); 
Questions connexes