У меня есть код ниже, который я использую для трассировки лучей. Код работает успешно на не-сетчатых iPads, однако не работает на сетчатке iPads. Прикосновение обнаружено, однако преобразованная точка выключена влево и внизу, где она должна быть. Может ли кто-нибудь предложить, как я могу обновить ниже, чтобы разместить экран сетчатки?Обновление OpenGL ES Touch Detection (Ray Tracing) для iPad Retina?
- (void)handleTap: (UITapGestureRecognizer *)recognizer
{
CGPoint tapLoc = [recognizer locationInView:self.view];
bool testResult;
GLint viewport[4];
glGetIntegerv(GL_VIEWPORT, viewport);
float uiKitOffset = 113; //Need to factor in the height of the nav bar + the height of the tab bar at the bottom in the storyboard.
GLKVector3 nearPt = GLKMathUnproject(GLKVector3Make(tapLoc.x, (tapLoc.y-1024+uiKitOffset)*-1, 0.0), modelViewMatrix, projectionMatrix, &viewport[0] , &testResult);
GLKVector3 farPt = GLKMathUnproject(GLKVector3Make(tapLoc.x, (tapLoc.y-1024+uiKitOffset)*-1, 1.0), modelViewMatrix, projectionMatrix, &viewport[0] , &testResult);
farPt = GLKVector3Subtract(farPt, nearPt);
for (Object * Object in self.objectArray) {
...
}
Спасибо, надеюсь, проведут для iPad Air. – GuybrushThreepwood
@Ohnomycoco уверен, iPad 3/4 и iPad air и iPad mini retina имеют одинаковое разрешение экрана, этот код будет работать даже на iPhone без каких-либо проблем. Потому что я заменил ваш 1024 на видовом экране [3], в котором хранится высота GL-контекста. проверить glViewport http://www.opengl.org/sdk/docs/man/xhtml/glViewport.xml – SAKrisT