최근 iPhone 용 OpenGL ES로 작업하기 시작했는데 약간의 문제가 있습니다. 손가락으로 물건을 회전시키고 싶습니다. 내 문제는 (0, 0, -3)에 배치 된 객체가 있고 그 중심을 중심으로 회전하고 싶습니다. 나는 원점으로 돌아가 번역하고 회전시킨 다음 다시 원래 위치로 가져와야한다는 것을 알고 있습니다. 나는 모든 회전/변환/스케일링 등을 추적하기 위해 행렬을 사용하기 때문에 문제가 발생한다고 생각한다. 그리고 순서가 고려되지 않은 방식으로 조작을 결합 할 수 있다고 생각한다. (그래서 두 번역은 서로 취소 할 것입니다). 나는 하루 전 OpenGL을 배우기 시작했고 완전한 초보자입니다. 그래서 제 가정은 틀릴 수도 있습니다.iPhone 용 OpenGL ES에서 객체 회전 [원본 -> 회전 - 뒤 번역이 작동하지 않습니다.]
도움이 많이 주시면 감사하겠습니다GLfloat matrix[16];
glGetFloatv(GL_MODELVIEW_MATRIX, matrix);
glLoadIdentity();
glTranslatef(0, 0, 3); // bring to origin
glRotatef(self.angle, self.dy, self.dx, 0); // rotate
glTranslatef(0, 0, -3); // put it back in place
glMultMatrixf(matrix); // save the transformations performed
, 감사합니다 :
는 여기에 내가에 문제가 있어요 그 drawView에서의 일부입니다!
변환을 함께 묶어도 좋습니다. 그것이 행렬 변환이 작동하는 방식입니다. 그것에 대해 정확히 무엇이 효과가 없습니까? – Alan
glTranslatef (0, 0, 3)를 사용해도 번역 전에 회전하도록 요청한 것처럼 보입니다. 그래서 제가 (1, 0, 0)에 관해서 원점으로의 변환 후에 회전 시키길 원한다면, 원점으로 회전 한 후에 회전 할 것을 기대하지만 회전 대신에 큰 원으로 궤도를 그리게됩니다. –