java中的openGL:使用TouchEvent移动相机
我需要通过触摸屏创建相机的x、y轴移动/改变位置。我已经阅读了前面的许多问题,但是没有人注意到可以解决我问题的东西 如何使用此代码?:java中的openGL:使用TouchEvent移动相机,java,android,opengl-es,android-camera,touch-event,Java,Android,Opengl Es,Android Camera,Touch Event,我需要通过触摸屏创建相机的x、y轴移动/改变位置。我已经阅读了前面的许多问题,但是没有人注意到可以解决我问题的东西 如何使用此代码?: class ESSurfaceView extends GLSurfaceView { private final float TOUCH_SCALE_FACTOR = 180.0f / 320; private float mPreviousX; private float mPreviousY; @Override public boolean onTo
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);
}}
class ESSurfaceView扩展了GLSurfaceView{
私人最终浮动接触比例系数=180.0f/320;
私人浮动MPX;
私家车;
@凌驾
公共事件(运动事件e){
float x=e.getX();
float y=e.getY();
开关(如getAction()){
case MotionEvent.ACTION\u移动:
浮点数dx=x—mPreviousX;
浮动dy=y-mPreviousY;
如果(y>getHeight()/2){
dx=dx*-1;
}
if(x
官方Android培训有一个例子(与您的基本相同):
它还提供了完整的源代码
顺便说一句,你永远不会在openGL中移动相机,你会移动世界。
如需进一步了解,请阅读:
这会让你更好地理解事情是如何运作的