简单的问题。将CGPoint转换为GLKVector的最佳方法是什么?
这些结构是相同的,所以能够重新解释广播或memcpy或类似的东西会很好。我的解决方案有效,但似乎不太合适。我正在堆栈上创建一个GLKVector2,为每个成员分配然后将其作为一个值返回,然后将其分配给另一个GLKVector。
它不会破坏银行或其他任何东西,但必须有一个更简洁的方法来做到这一点?
GLKVector2 Vector2FromPoint(CGPoint point)
{
GLKVector2 v;
v.x = point.x;
v.y = point.y;
return v;
}
答案 0 :(得分:1)
你可以尝试在这样的函数中使用memcpy:
bool vector2ToCGPoint(GLKVector2* s, CGPoint* d) {
memcpy(d, s, sizeof(*d));
}
但是最好有:
bool copyVector2ToCGPoint(GLKVector2* s, CGPoint* d) {
d.x = s.x;
d.y = s.x;
}
如果你真的想要优化,你可以选择一个宏:
#define copyS2D(S,D) (D.x = S.x, D.y = S.y)
所以你可以这样做:
CGPoint b;
GLKVector2 a;
vector2FromCGPoint(a, b);
当然,正如您所知,宏不会那么类型安全......
答案 1 :(得分:-1)
GLKVector2 v = GLKVector2Make(point.x, point.y);