Render08.java :  » Graphics-3D-2D-OpenGL » ogles-tutorial-android » com » nbx » app » zeuscmdport » Android Open Source

Android Open Source » Graphics 3D 2D OpenGL » ogles tutorial android 
ogles tutorial android » com » nbx » app » zeuscmdport » Render08.java
package com.nbx.app.zeuscmdport;

import java.nio.FloatBuffer;

import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;

import android.content.Context;
import android.util.Log;
import android.view.MotionEvent;

/**
 * http://www.zeuscmd.com/tutorials/opengles/08-ColorAndShading.php
 * 
 */
public class Render08 extends RenderBase {
  private final static String TAG_RENDER = "Render";
  
  public Render08(Context context) {
    super(context);
  }

  private float triangle[] = {
      0.25f, 0.25f, 0.0f, 
      0.75f, 0.25f, 0.0f, 
      0.25f, 0.75f, 0.0f};

  private float colors[] = {
      1.0f, 0.0f, 0.0f, 1.0f, 
      0.0f, 1.0f, 0.0f, 1.0f, 
      0.0f, 0.0f, 1.0f, 1.0f};

  private boolean shaded = false;
    
  private FloatBuffer mTriangleBuffer;
  private FloatBuffer mColorBuffer;

  public void onSurfaceCreated(GL10 gl, EGLConfig config) {
    Log.i(TAG_RENDER, "onSurfaceCreated");
    // preparation
    gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);

    mTriangleBuffer = createFloatBuffer(triangle);
    mColorBuffer = createFloatBuffer(colors);
    
    gl.glClearColor (0.0f, 0.0f, 0.0f, 0.0f);

    gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mTriangleBuffer);
    gl.glColorPointer(4, GL10.GL_FLOAT, 0, mColorBuffer);
    gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
    gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
    
    gl.glShadeModel(GL10.GL_FLAT);
  }

  public void onSurfaceChanged(GL10 gl, int width, int height) {
    Log.i(TAG_RENDER, "onSurfaceChanged");

    gl.glViewport(0, 0, width, height);
    gl.glMatrixMode(GL10.GL_PROJECTION);
    gl.glLoadIdentity();
    gl.glOrthof(0.0f, 1.0f, 0.0f, 1.0f, -1.0f, 1.0f);      
  }

  public void onDrawFrame(GL10 gl) {
    Log.i(TAG_RENDER, "onDrawFrame");

    gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
    
    if(shaded){
      gl.glShadeModel(GL10.GL_SMOOTH);
    }else{
      gl.glShadeModel(GL10.GL_FLAT);
    }
    
    gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 3);
  }
  
  @Override
  public boolean handleTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_UP) {
      shaded = !shaded;
      return true;
    }
    return false;
  }  
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.