我主要关注glm库。 我想使用glm :: translate翻译矢量+矩阵,但它会抛出错误:
我有以下代码:
#define GLEW_STATIC
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <GL\glew.h>
#include <GL\GLU.h>
#include <GL\glut.h>
#include <glm.hpp>
#include <GL\gl.h>
#include <gtx\transform2.hpp>
#include <GLFW\glfw3.h>
using namespace std;
using namespace glm;
int main()
{
if (!glfwInit())
{
fprintf(stderr, "Failed to initialize GLFW\n");
return -1;
}
// defining the matrices
glm::mat4 myMatrix = glm::translate(10f,0.0f,0.0f);
glm::vec4 myVector(10.0f, 10.0f, 10.0f, 0.0f);
glm::vec4 transformedVector = myMatrix * myVectors; // multiplication
return 0;
}
当我执行代码时,出现以下错误:
error C2059: syntax error : 'bad suffix on number'
error C2146: syntax error : missing ')' before identifier 'f'
error C2784: 'glm::detail::tmat4x4<T,P> glm::translate(const glm::detail::
tvec3<T,P> &)' : could not deduce template argument for 'const glm::detail::tvec3<T,P> &' from 'int'
还有一堆错误。
使用@ lazyCoder的解决方案,我消除了许多错误。虽然,我得到一个关于glm :: translate()的错误,这是关于参数:
error C2780: 'glm::detail::tmat4x4<T,P> glm::translate(const glm::detail::tvec3<T,P> &)
' : expects 1 arguments - 3 provided
1> c:\opengl\glm-0.9.5.4\glm\glm\gtx\transform.hpp(61) : see declaration of
'glm::translate'
error C2780: 'glm::detail::tmat4x4<T,P> glm::translate(const glm::detail::tmat4x4<T,P>
&,const glm::detail::tvec3<T,P> &)' : expects 2 arguments - 3 provided
1> c:\opengl\glm-0.9.5.4\glm\glm\gtc\matrix_transform.hpp(86) : see declaration of 'glm::translate'
答案 0 :(得分:4)
将translate
调用的第一个参数替换为10.f
,编译器会抱怨该数字的后缀不正确,或引用g ++错误消息invalid suffix "f" on integer constant
跟进连续错误我现在没有glm但似乎translate
需要vec3
作为输入而不是3个参数所以试试
translate(glm::vec3(10.f, 0.f, 0.f))
答案 1 :(得分:0)
这可能是最近的变化(我相信使用glm 9.61),我不知道它是否与此讨论相关,但glm :: translate()似乎接受参数glm :: mat4x4和glm :: vec3分别。
因此,当我遇到类似的错误时,我改变了我的表达式
glm::translate(10.f,0.f,0.f)
到
glm::translate(glm::mat4x4(),glm::vec3(10.f,0.f,0.f)).