gpt4 book ai didi

c++ - GLM 功能不起作用

转载 作者:行者123 更新时间:2023-11-30 01:50:20 25 4
gpt4 key购买 nike

我正在尝试创建一个简单的矩阵以在我的着色器中使用(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
)

为什么会出现此错误?

最佳答案

至少在当前版本glm (0.9.6)没有以三个 float 作为参数的 glm::scale 函数。只有一个重载接受一个矩阵,该矩阵应该被缩放为一个包含缩放因子的 vector 。

您的代码示例的正确解决方案 ( according to here ) 是

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

编辑:我偶然发现了 this page ,看起来好像在 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));  

关于c++ - GLM 功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27546452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com