在Objective-C中将CGPoint转换为GLKVector2
简单的问题。 将CGPoint转换成GLKVector的最佳方法是什么?
这些结构是相同的,所以能够reinterpret_cast或memcpy或类似的东西是很好的。 我的解决scheme下面的工作,但几乎看起来最佳 我在堆栈上创build一个GLKVector2,指定每个成员,然后将其作为一个值分配给另一个GLKVector。
它不会打破银行或任何东西,但必须有一个更好的方式来做到这一点?
GLKVector2 Vector2FromPoint(CGPoint point) { GLKVector2 v; vx = point.x; vy = point.y; return v; }
你可以尝试在这样的函数中使用memcpy:
bool vector2ToCGPoint(GLKVector2* s, CGPoint* d) { memcpy(d, s, sizeof(*d)); }
但是这样做可能会更好:
bool copyVector2ToCGPoint(GLKVector2* s, CGPoint* d) { dx = sx; dy = sx; }
如果你真的想要优化,你可以去一个macros:
#define copyS2D(S,D) (Dx = Sx, Dy = Sy)
所以你可以这样做:
CGPoint b; GLKVector2 a; vector2FromCGPoint(a, b);
当然,正如你所知道的,macros不会那么安全。
GLKVector2 v = GLKVector2Make(point.x, point.y);