I'm following a tutorial on an OpenGL particle system that references this gist. I've come across some perplexing problems in the glm content though.
Inside, it has the following lines...
Code :float normalFactor = glm::dot(force, glm::vec4(0.0f, 1.0f, 0.0f, 0.0f)); if (normalFactor < 0.0f) force -= glm::vec4(0.0f, 1.0f, 0.0f, 0.0f) * normalFactor; <--ERROR HERE float velFactor = glm::dot(p->m_vel[i], glm::vec4(0.0f, 1.0f, 0.0f, 0.0f)); <--ERROR HERE
It is where I receive errors from Visual Studio 2013 that are confusing me a bit.
Multiplication of glm::vec4 and normalFactor: "Error: no operator '*' matches these operands. Operands are: glm::vec4 * float"
glm::dot call with two vec4 objects: "Error: no instance of overloaded function 'glm::dot' matches the argument list. Argument types are: (glm::vec4, glm::vec4)
I checked the declaration of glm::vec4's operators and there is indeed a scaling '*' operator.
I also checked the implementation of glm::dot and it explicitly accepts vecType objects (which tvec4 and vec4 both are by extension).
Why then, if both of these implementations exist, do I receive these errors?
I have included various header files at the top of my cpp file, in varying combinations to try and make it work...
None of them seem to have anything that makes the code actually compile.Code :#include "ParticleUpdaters.hpp" //relevant to the tutorial #include <glm/glm.hpp> #include <glm/vec4.hpp> #include <glm/common.hpp> #include <glm/geometric.hpp> #include <glm/trigonometric.hpp>
Either the guy who made the tutorial deliberately made code that doesn't compile, or I am missing something extremely obvious. Can anyone point me in the right direction?
Also, I have found that it can be difficult to identify which exact header file contains which functions. Can someone please show me a simple searchable database/website/something online I can reference for that?