Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ANDROID. ACTIVIDAD GLSURFACEVIEW 01

120 views

Published on

Guión de trabajo para realizar una actividad con GLSurfaceview

Published in: Software
  • Be the first to comment

  • Be the first to like this

ANDROID. ACTIVIDAD GLSURFACEVIEW 01

  1. 1. ACTIVIDADES CON GLSURFACEVIEW ACTIVIDAD 01 En esta actividad vamos a crear nuestro escenario y entorno de trabajo sobre el que desarrollar futuras actividades con GLSurfaceview. PARTE 1: CREAR LA ACTIVITY Y PREPARAR LAYOUT 1. Inicia una nueva Activity que extienda a AppCompatActivity 2. Crea en el Layout un LinearLayout (vertical) que anide en su interior dos LinearLayout 3. El primero (vertical) tendrá una etiqueta de texto centrada y bajo esta una línea negra (2sp) 4. El segundo (vertical) tendrá 4 elementos en este orden de arriba a bajo  Un RelativeLayout (vacio) con id, ocupando el ancho, 300 dp de alto y 20 dp de margen  Una línea negra de 1sp  Un Texto a ancho completo, ajustado en alto y centrado  Una línea negra de 1sp 5. Ejecuta y comprueba que se parece a la siguiente imagen PARTE 2: CREANDO LA SUPERCIE DE TRABAJO 1. Crea una clase pública externa haz que extienda de GLSurfaceView 2. Ponle un nombre que haga referencia a que es un GLSurface 3. Creale el constructor con el contexto como parámetro 4. A comtinuación crearemos el interfaz de renderizado 5. Crea una clase que hga alusión al renderizado (debajo de la GLSurfaceView) 6. Impleméntale el interface de renderizado del Surface  implements GLSurfaceView.Renderer 7. Te mostrará error porque faltan los métodos 8. Ahora crearemos y sobreescribiremos los tres métodos de renderizado  onSurfaceCreated(GL10 gl, EGLConfig config) {}  onSurfaceChanged(GL10 gl, int ancho, int alto) { }  onDrawFrame(GL10 gl) { }
  2. 2. PARTE 3: ENLAZANDO DEL RENDER CON EL GLSURFACE 1. Trabajando en la clase GLSurfaceView (GLS) 2. Hereda una clase de la que has creado para el renderizado  Renderizado miRender; 3. Dentro del constructor crea esta clase  miRender = new Renderizado(); 4. Setea en el render de la vista esta clase  setRenderer(miRender); PARTE 4: ESTABLECIENDO LLAMADA DESDE LA VISTA PRINCIPAL 5. Trabajando con la clase principal 6. Inicializaremos un GLSurfaceView (GLS) y un RelativeLayout  private GLSurfaceView glvista;  RelativeLayout rl; 7. En onCreate enlazaremos el Relativelayout con el que tenemos en el layout de la vista 8. Crearemos el GlSurfaceView inicializado  glvista = new GLSurfaceView(this); 9. Añadiremos al Relativelayout la vista del GlSurfaceView  rl.addView(glvista); 10. Ejecuta y comprueba que se parece a la imagen de más abajo 11. Como pureza de código cuando la activity entre en pausa debes poner la vista GLS en pausa  glvista.onPause(); 12. Cuando se encuentre en onResume dbes ponerla en onResume  glvista.onResume(); PARTE 5: MEJORANDO LOS MÉTODOS DE LA VISTA GLSURFACE 1. Volvemos a trabajar con la vista GLS 2. Mejoraremos los métodos propios para tenerlos preparadso para futuras actividades 3. Prímero trabajaremos con onSurfaceCreated 4. Añadiremos el siguiente código (suponiendo que le has puesto gl al parámetro GL10)
  3. 3.  gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);  gl.glClearDepthf(1.0f);  gl.glEnable(GL10.GL_DEPTH_TEST);  gl.glDepthFunc(GL10.GL_LEQUAL);  gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);  gl.glShadeModel(GL10.GL_SMOOTH);  gl.glDisable(GL10.GL_DITHER); 5. A continuación trabajaremos con onSurfaceChanged 6. Protegeremos el colapso del alto y deiniremos el aspecto  if (alto == 0) alto = 1;  float aspecto = (float) ancho / alto; 7. Añadiremos los siguientes métodos públicos  gl.glViewport(0, 0, ancho, alto);  gl.glMatrixMode(GL10.GL_PROJECTION);  gl.glLoadIdentity();  GLU.gluPerspective(gl, 45, aspecto, 0.1f, 100.f);  gl.glMatrixMode(GL10.GL_MODELVIEW);  gl.glLoadIdentity(); 8. Por último modificaremos onDrawFrame  gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); 9. Ejecuta y comprueba que aparentemente nada ha cambiado

×