2010-06-09 93 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]);