using namespace glm;
int main()
{
glm::vec4 vec(1.0f, 0.0f, 0.0f, 1.0f);
glm::mat4 trans;
trans = glm::translate(trans, glm::vec3(1.0f, 1.0f, 0.0f));
vec = trans * vec;
std::cout << vec.x << vec.y << vec.z << std::endl;
std::cout<<"snippet is supposed to be 2 1 0";
return 0;
}
The result is supposed to be 2 1 0. Instead I get:
-1.18134e-0111.26952e+0349.56182e+033
What gives?
I get 210. Does the code compile without warnings?
I’m also getting 210. Here’s my console output:
210
snippet is supposed to be 2 1 0
Your code looks right in printing out 210 for your vec printing line. Maybe a recompile will do? My only other thought is using a new set of glm include files, maybe you might’ve accidentally modified one of them.
[QUOTE=DragonautX;1289471]I’m also getting 210. Here’s my console output:
Your code looks right in printing out 210 for your vec printing line. Maybe a recompile will do? My only other thought is using a new set of glm include files, maybe you might’ve accidentally modified one of them.[/QUOTE]
I’ve cleaned the worksite, restarted the IDE, and, restarted the machine. Same result. Open to any ideas.
UPDATE: ran the program on Qt - same result.
#define GLM_ENABLE_EXPERIMENTAL
#include <iomanip>
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtx/transform.hpp>
#include "glm/gtx/string_cast.hpp"
#include <glm/gtc/type_ptr.hpp>
#include <iostream>
using namespace glm;
int main()
{
glm::vec4 vec(1.0f, 0.0f, 0.0f, 1.0f);
glm::mat4 trans;
trans = glm::translate(trans, glm::vec3(1.0f, 1.0f, 0.0f));
std::cout << vec.x << vec.y << vec.z << std::endl;
vec = trans * vec;
std::cout << vec.x << vec.y << vec.z << std::endl;
std::cout<<"snippet is supposed to be 2 1 0";
return 0;
}
doing a little debugging it looks like the numbers get trashed in this step:
vec = trans * vec;
I’ve put the extended includes for brevity; maybe something is happening there?
Yay:
From the tutorial site:
Since GLM version 0.9.9, GLM default initializates matrix types to a 0-initalized matrix, instead of the identity matrix. From that version it is required to initialize matrix types as: glm::mat4 mat = glm::mat4(1.0f). For consistency with the tutorials’ code it’s advised to use a version of GLM lower than 0.9.9 or initialize all matrices as mentioned above.
using namespace glm;
int main()
{
glm::vec4 vec(1.0f, 0.0f, 0.0f, 1.0f);
std::cout << vec.x << vec.y << vec.z << std::endl;
glm::mat4 trans = glm::mat4(1.0);
trans = glm::translate(trans, glm::vec3(1.0f, 1.0f, 0.0f));
std::cout << vec.x << vec.y << vec.z << std::endl;
vec = trans * vec;
std::cout << vec.x << vec.y << vec.z << std::endl;
std::cout<<"snippet is supposed to be 2 1 0";
return 0;
}
output:
100
100
210
snippet is supposed to be 2 1 0