2017-02-15 7 views
1

화면을 터치하여 x, y 축을 사용하여 카메라의 이동/변경 위치를 만들어야합니다. 나는 이전의 많은 질문을 읽었지만, 내 문제를 해결할 수있는 어떤 것도 발견하지 못했습니다.java에서 openGL : TouchEvent로 카메라 이동

어떻게이 코드를 사용할 수 있습니까? : 또한 완전한 소스를 제공 https://developer.android.com/training/graphics/opengl/touch.html :

class ESSurfaceView extends GLSurfaceView { 

private final float TOUCH_SCALE_FACTOR = 180.0f/320; 
private float mPreviousX; 
private float mPreviousY; 

@Override 
public boolean onTouchEvent(MotionEvent e) { 

    float x = e.getX(); 
    float y = e.getY(); 

    switch (e.getAction()) { 
     case MotionEvent.ACTION_MOVE: 

      float dx = x - mPreviousX; 
      float dy = y - mPreviousY; 

      if (y > getHeight()/2) { 
       dx = dx * -1 ; 
      } 

      if (x < getWidth()/2) { 
       dy = dy * -1 ; 
      } 

      GLRenderer.setAngle(
        GLRenderer.getAngle() + 
          ((dx + dy) * TOUCH_SCALE_FACTOR)); 
      requestRender(); 
    } 

    mPreviousX = x; 
    mPreviousY = y; 
    return true; 
} 

public ESSurfaceView(Context context) 
{ 
    super(context); 

    setEGLContextClientVersion(2); 
    GLRenderer renderer = new GLRenderer(); 
    setRenderer(renderer); 

    // Render the view only when there is a change in the drawing data 
    //setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); 
}} 

답변

1

offical 한 안드로이드 교육 (대부분 동일하게 너의) 그에 대한 예제가 있습니다.

그런데 - 당신은 결코 OpenGL에서 카메라를 움직이지 마십시오 - 당신은 세상을 움직입니다. 자세한 내용을 보시려면 다음을 읽어보십시오. http://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices/ 이렇게하면 일이 어떻게 작동하는지 더 잘 이해할 수 있습니다.