2017-02-15 1 views
1

Je dois créer un mouvement/changement de position de la caméra avec les axes x, y en touchant l'écran. J'ai lu plusieurs des questions précédentes, mais nulle part remarqué quelque chose qui résoudra mon problème.openGL in java: caméra en mouvement avec TouchEvent

comment puis-je utiliser ce code? :

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); 
}} 

Répondre

1

Offical Training Android a un exemple (la plupart du temps identique à la vôtre) pour que: https://developer.android.com/training/graphics/opengl/touch.html Il offre également la source complète. D'ailleurs - vous ne déplacez jamais la caméra en openGL - vous déplacez le monde. Pour plus de compréhension s'il vous plaît lire: http://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices/ Cela devrait vous donner une meilleure compréhension de la façon dont les choses fonctionnent ...