For my game engine, I'm defining records like TVector, TMatrix, TPoint, TRay, TPlane, and so on, but I don't know whether I should make the the type of their members single or double. I suppose I could define two versions, e.g. TVectors, and TVectord, for single and double, but then, which one do I actually use?

Related, many OpenGL functions tend to have two versions: one for doubles (glBlahd) and one for floats (glBlahf). Which one should I use in my game engine?