OpenGL iOS 屏幕坐标到场景坐标

OpenGL iOS screen coordinates to scene coordinates

我正在使用 OpenGl 制作一个小应用程序,但我不知道如何获取触摸的 x , yz 坐标

例如:

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint touchPoint = [touch locationInView:[self view]];

float X = touchPoint.x;
float Y = touchPoint.y;

}

用这个我只得到 xy 坐标,但我还需要 z

您无法在 OpenGL ES 上读取 z 缓冲区。当我需要进行这种 3D 命中测试时,我会在场景中投影一条 3d 线并自己完成命中测试。

对于 Retina 设备上的 OpenGL,您需要将 x 和 y 乘以比例。要支持 iPhone 6+,您需要在可用时使用 nativeScale。

// Do this when setting up view controller and remember theScale.
if ([[UIScreen mainScreen] respondsToSelector:@selector(nativeScale)])
  theScale = [[UIScreen mainScreen] nativeScale];
else if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
  theScale = [[UIScreen mainScreen] scale];
else 
  theScale = 1.0;