2010-06-09 95 views
6

我在写一个OpenGL程序,计算我自己的矩阵并将它们传递给着色器。我想为矩阵使用Boost的uBLAS库,但我不知道如何将uBLAS矩阵转换为OpenGL的着色器统一函数。将OpenGL着色器的uBLAS矩阵传递给我

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

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

尝试将矩阵转换为GLfloat指针会导致编译时出现无效的转换错误。

回答

7

应该这样做:

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