我正在研究OpenGL中的一段代碼。 我收到以下錯誤信息,同時試圖編譯:glUniform3fv不工作OpenGL
MyGLWidget.cpp: In member function ‘virtual void MyGLWidget::initializeGL()’:
MyGLWidget.cpp:30:38: error: cannot convert ‘glm::vec3 {aka glm::tvec3<float, (glm::precision)0u>}’ to ‘const GLfloat* {aka const float*}’ in argument passing
MyGLWidget.cpp:31:39: error: cannot convert ‘glm::vec3 {aka glm::tvec3<float, (glm::precision)0u>}’ to ‘const GLfloat* {aka const float*}’ in argument passing
我已經宣佈在MyGLWidget.h這些位置如下:
GLuint llumLoc, focusLoc;
而且有MyGLWidget.cpp它們初始化爲:
llumLoc = glGetUniformLocation (program->programId(), "llumAmbient");
focusLoc = glGetUniformLocation (program->programId(), "posFocus");
「llumAmbient」 和 「posFocus」 在我的頂點着色器的制服:
uniform vec3 llumAmbient;
uniform vec3 posFocus;
我得到的提到的錯誤信息,同時試圖調用MyGLWidget內將以下代碼:: initializeGL
glUniform3fv(llumLoc, 1, glm::vec3(0.2));
glUniform3fv(focusLoc, 1, glm::vec3(1.0));
很顯然,我試圖跟隨在www.opengl.org和glm.g-truc.net/0.9.2/api/a00001.html的文件,但我可以」看看這個代碼有什麼問題...
我很確定這應該是'glm :: value_ptr(v)' – chbaker0
完美的是,這個小小的改正完成了。現在工作。謝謝! – houcros