在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);