GLM函数不起作用。

4

我正在尝试创建一个简单的矩阵,用于我的着色器(OpenGL 3.x新手),但是GLM报错了。

这是我尝试过的一种方法:

glm::mat4 scaleMatrix = glm::scale(2.0f, 2.0f, 2.0f);

很遗憾,编译器(MinGW)报错如下:

error: no matching function for call to 'scale(float, float, float)'
candiate is:
template<class T, glm::precision P> glm::detail::tmat4x4<T, P> glm::scale(const   
glm::detail::tmat4x4<T, P>&, const glm::detail::tvec3<T, P>&)

当我在IDE中点击错误时,它会带我到“matrix_transform.inl”下面的第一行:
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> scale
        (
        detail::tmat4x4<T, P> const & m,
        detail::tvec3<T, P> const & v
        )

我为什么会收到这个错误信息?

1个回答

8

至少在当前版本的glm (0.9.6)中,没有以三个浮点数为参数的glm::scale函数。只有一个重载函数,它接受一个矩阵和一个包含缩放因子的向量来进行缩放。

根据这里所说,你代码示例的正确解决方案应该是

glm::mat4 scaleMatrix = glm::scale(glm::mat4(1.0f), glm::vec3(2.0f, 2.0f, 2.0f));

编辑:我刚刚偶然发现这个页面,看起来0.9.4版本中glm:scale(float,float,float)函数已经有了重载。

编辑:正如sajas指出的那样,glm::scale函数还有第二个重载可用。这个函数只需要一个glm::vec3参数,可能更符合您的需求。

glm::mat4 scaleMatrix = glm::scale(glm::vec3(2.0f, 2.0f, 2.0f));  

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接