我正在研究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