将矩阵和向量与 GLM 相乘时出错

use*_*426 1 opengl vector matrix matrix-multiplication glm-math

我在按照本教程尝试使用 GLM 进行矩阵和向量相乘时遇到此错误。

\n\n
reading1.cpp: In function \xe2\x80\x98int main()\xe2\x80\x99:\nreading1.cpp:50:44: error: conversion from \xe2\x80\x98glm::detail::tmat4x4<int>\xe2\x80\x99 to non-scalar type \xe2\x80\x98glm::mat4 {aka glm::detail::tmat4x4<float>}\xe2\x80\x99 requested\n
Run Code Online (Sandbox Code Playgroud)\n\n

我正在使用这个命令来编译。

\n\n

g++ 1.cpp -o 1 -lGLEW -lglfw

\n\n
#include <glm/glm.hpp>\n#include <glm/gtx/transform.hpp>\n\n//program\n\n\n\nglm::mat4 myMatrix = glm::translate(10,0,0);\nglm::vec4 myVector(10,10,10,0);\nglm::vec4 transformedVector = myMatrix * myVector;\n\n//program\n
Run Code Online (Sandbox Code Playgroud)\n

Tim*_*Tim 5

我发现由于大量使用模板,GLM 对类型非常挑剔。我的猜测是您的 vec4 或 mat4 正在创建int类型,而不是float.

尝试显式地使用浮点数创建它们,因为如果存在与模板匹配的 int 构造函数,它不会自动转换它们。

glm::mat4 myMatrix = glm::translate(10.f,0.f,0.f);
glm::vec4 myVector(10.f,10.f,10.f,0.f);
Run Code Online (Sandbox Code Playgroud)