我正在尝试将glm中的quat转换为mat4。
我的代码是:
#include <iostream>
#include<glm/glm.hpp>
#include<glm/gtc/quaternion.hpp>
#include<glm/common.hpp>
using namespace std;
int main()
{
glm::mat4 MyMatrix=glm::mat4();
glm::quat myQuat;
myQuat=glm::quat(0.707107,0.707107,0.00,0.000);
glm::mat4 RotationMatrix = quaternion::toMat4(myQuat);
for(int i=0;i<4;++i)
{
for(int j=0;j<4;++j)
{
cout<<RotationMatrix[i][j]<<" ";
}
cout<<"\n";
}
return 0;
}
当我运行程序时,它显示错误&#34;错误:'quaternion'尚未声明&#34;。
任何人都可以帮我吗?
答案 0 :(得分:9)
添加include:
#include <glm/gtx/quaternion.hpp>
修复toMat4
:
glm::mat4 RotationMatrix = glm::toMat4(myQuat);
glm::toMat4()
存在于gtx/quaternion.hpp
文件中,you can see只有glm
命名空间。
另外作为附注,从C ++ 14开始,嵌套命名空间(例如glm :: quaternion :: toMat4)are not allowed。
答案 1 :(得分:5)
除了meepzh的答案,它也可以这样做:
glm::mat4 RotationMatrix = glm::mat4_cast(myQuat);
不需要#include <glm/gtx/quaternion.hpp>