Согласно deanWombourne, вы используете GLKMatrix4Rotate
неправильно. Когда вы выполняете:
GLKMatrix4Rotate(modelViewMatrix, -1, startPoint.x, startPoint.y, 0.0f);
Вы вращаете -1 радиан вокруг оси (startPoint.x, startPoint.y, 0.0f). Похоже, что вы хотите вращать радианы startPoint.x вокруг (1, 0, 0) и радианы startPoint.y вокруг (0, 1, 0). Так, например:
modelViewMatrix = GLKMatrix4Rotate(modelViewMatrix, startPoint.x, 1.0f, 0.0f 0.0f);
modelViewMatrix = GLKMatrix4Rotate(modelViewMatrix, startPoint.y, 0.0f, 1.0f 0.0f);
Или, возможно, вы хотите разделить startPoint.x и startPoint.y, потому что это будет гиперчувствительным к прикосновениям.
У него также будут некоторые проблемы с блокировкой карданного подвеса - по сути, потому что, если вы сначала поворачиваете вокруг x, то ось y не обязательно там, где вы думаете, а если вы поворачиваете вокруг y сначала, то ось x не обязательно где вы думаете это. Вас это беспокоит?