我知道屏幕的左上角(假设手机横向放置)是(0,0)。但是,如果我希望我的 (0,0) 点位于左下角而不是左上角,我该怎么做?
我正在尝试使用 OpenGL 在我当前在屏幕上触摸的指定位置绘制对象,但 y 值被绘制在屏幕的错误一侧。如果有帮助,这是该问题的图片示例。请注意,白色的点是我“触摸”屏幕的地方,紫色的东西是我使用 OpenGL 绘制的粒子系统。
我这样设置我支持的界面:
- (NSUInteger)application:(UIApplication*)application supportedInterfaceOrientationsForWindow:(UIWindow*)window
{
return UIInterfaceOrientationMaskAllButUpsideDown;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscapeLeft;
}
在我的drawFrame
方法中:
glViewport(0, 0, 480, 320);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(0.0f, 480, 0.0f, 320, -100.0f, 100.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
//render the particles being drawn, etc
在我的touchesBegan
方法中:
UITouch *touch = [[event allTouches] anyObject];
CGPoint location = [touch locationInView:touch.view];
if (pe.active != YES)
{
pe.active = YES;
NSLog(@"x: %f y: %f", location.x, location.y);
pe.sourcePosition = Vector2fMake(location.x, location.y);
}
然后我尝试通过在我的viewWillAppear
方法中执行此操作手动将坐标系旋转 90 度:
self.view.transform = CGAffineTransformIdentity;
self.view.transform = CGAffineTransformMakeRotation((M_PI * (-90) / 180.0));
self.view.bounds = CGRectMake(0.0, 0.0, 480, 320);
指定CGAffineTransformMakeRotation
调用应该会改变坐标系,但不会。
任何帮助是极大的赞赏。