2015-05-19 13 views
0

Я использую OpenGL, чтобы сделать небольшое приложение, и я понятия не имею, как получить x , y и z координаты прикосновенияOpenGL IOS экранные координаты в координаты сцены

Например:

-(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; 

} 

с этим я получаю только координаты x и, но мне нужны z

+0

Вы можете запросить Z-буфер, если у вас есть легкий доступ к нему. Это действительно зависит от того, что вы подразумеваете под координатой «Z», хотя я предполагаю, что вы имеете в виду глубину, но нет глубины на ощупь. – JustSid

ответ

0

Вы не можете прочитать буфер z на OpenGL ES. Когда мне нужно было сделать такое 3D-тестирование, я проецировал 3D-линию через сцену и сам выполнил тест-тест.

Для устройств OpenGL на Retina вам необходимо умножить 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; 
+0

Спасибо за ваш быстрый ответ – Maximilian