I do recommend to use the GLvectorf3 type from the OpenGL. There is nothing inherently wrong with that type, but there is also almost no benefit in using it, because it's just an alias for an array. There are not typica vector operations like dot product or cross product defined. I recommend to use a 3D math library additionaly. I used so far the nim version of glm, and as much as I can tell, it is ok, but I was also not 100% happy with it. But for a start, I guess it should be ok.
To your original problem. It is almost impossible from my here to see what is wrong in your code. Sadly in opengl there can go a lot of things wrong, so you should post a bit more of your code rather than just a Vec3 type (the type looks ok to me). Maybe it is best to show both versions the c++ version and the nim version, and I might be able to see further what is wrong in it.
