package com.vizit;
import android.app.Activity;
import android.os.Bundle;
import android.content.Context;
import android.opengl.GLSurfaceView;
import android.view.MotionEvent;
import android.graphics.PointF;
import android.view.ViewGroup;
public class ESProjection
extends Activity
{
private GLSurfaceView view;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// Create a GLSurfaceView instance and set it
// as the ContentView for this Activity.
view = new MyGLSurfaceView(this);
setContentView(view,
new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
}
@Override
protected void onResume()
{
// The activity must call the GL surface view's onResume() on activity onResume().
super.onResume();
view.onResume();
}
@Override
protected void onPause()
{
// The activity must call the GL surface view's onPause() on activity onPause().
super.onPause();
view.onPause();
}
class MyGLSurfaceView extends GLSurfaceView
{
private final TriangleRenderer renderer;
/** Location of the most recent touch */
private PointF touch = new PointF();
public MyGLSurfaceView(Context context)
{
super(context);
// We are using the OpenGL ES 2 API..
setEGLContextClientVersion(2);
renderer = new TriangleRenderer();
// Set the Renderer for drawing on the GLSurfaceView
setRenderer(renderer);
// Render the view only when there is a change in the drawing data
setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
}
public boolean onTouchEvent (MotionEvent event)
{
switch (event.getAction())
{
case MotionEvent.ACTION_MOVE:
renderer.motion((event.getX() - touch.x)/getWidth()*2,
(touch.y - event.getY())/getHeight()*2);
touch.set(event.getX(), event.getY());
requestRender();
return true;
case MotionEvent.ACTION_DOWN:
touch.set(event.getX(), event.getY());
return true;
default:
return super.onTouchEvent(event);
}
}
}
}
Now we have a slightly more complex structure for our OpenGL program.