2017-02-15 10 views
1

Мне нужно создать положение перемещения/изменения камеры с осями x, y, коснувшись экрана. Я прочитал многие из предыдущих вопросов, но нигде не заметил того, что решит мою проблему.openGL в java: движущаяся камера с TouchEvent

Как я могу использовать этот код? :

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 Android Обучение имеет пример (в основном идентично с вашими) для этого: https://developer.android.com/training/graphics/opengl/touch.html Он также предлагает полный источник.

Кстати, вы никогда не перемещаете камеру в openGL - вы перемещаете мир. Для дальнейшего понимания, пожалуйста, прочтите: http://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices/ Это должно дать вам лучшее понимание того, как все работает ...