2014-12-30 6 views
1

OpenTK 프로젝트에서 2D 오브젝트를 회전하려고합니다.OpenTK - 2D 오브젝트를 회전하는 방법

회전 된 개체 뒤의 개체가 회전하고 그 개체를 원하지 않습니다.

이미 하나의 개체를 회전 한 후에 회전을 다시 설정하려면 어떻게해야합니까?

 protected override void OnRenderFrame(FrameEventArgs e) 
     { 
      GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); 
      GL.MatrixMode(MatrixMode.Projection); 
      GL.LoadIdentity(); 
      GL.Ortho(0, game.Width, game.Height, 0, -1, 4); 

      GL.MatrixMode(MatrixMode.Modelview); 
      GL.LoadIdentity(); 

      drawObject(); 
      GL.Rotate(180, Vector3d.UnitZ); 
      drawObject(); // Object I want to rotate 
      GL.Rotate(-180, Vector3d.UnitZ); 
      drawObject(); // I don't want this object to be rotated, but it does. How do I fix this? 
} 

고마워요!

답변

3

고정 함수 파이프 라인에서 회전 연산은 추가되지 않습니다. 대신 두 번째 것은 첫 번째 것을 대체합니다 (PushMatrix 작업이없는 한). 그래서 여러분이 현재 그린 그림은 180도 회전 한 첫 번째 객체와 -180도 정도의 두 번째 객체입니다.

질문에 답변 : 두 번째 호출을 LoadIdentity로 바꾸기로 바꾸면 현재 모델 매트릭스가 단위 변환으로 재설정되고 모든 변환이 제거됩니다.

drawObject(); 
GL.Rotate(180, Vector3d.UnitZ); 
drawObject(); 
GL.LoadIdentity(); 
drawObject(); 

참고 : 당신이 번역 및 확장을 유지하려는 경우 모든 변환은 GL.Rotate(0, Vector3d.UnitZ);

+0

당신에게 정말 고마워요 시도 할 수 있습니다, 여기 resetted 있습니다! – user2536897

관련 문제