OpenGL Utils 2 : OpenGL « 2D Graphics « Android






OpenGL Utils 2

   
//package com.adivasile;

/*
 * Copyright (C) 2008 aki@akjava.com
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import java.nio.IntBuffer;
import java.nio.ShortBuffer;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;

public class OpenGLUtils {

  public static FloatBuffer allocateFloatBuffer(int capacity) {
    ByteBuffer vbb = ByteBuffer.allocateDirect(capacity);
    vbb.order(ByteOrder.nativeOrder());
    return vbb.asFloatBuffer();
  }

  public static IntBuffer allocateInttBuffer(int capacity) {
    ByteBuffer vbb = ByteBuffer.allocateDirect(capacity);
    vbb.order(ByteOrder.nativeOrder());
    return vbb.asIntBuffer();
  }

  public static ShortBuffer allocateShortBuffer(int capacity) {
    ByteBuffer vbb = ByteBuffer.allocateDirect(capacity);
    vbb.order(ByteOrder.nativeOrder());
    return vbb.asShortBuffer();
  }

  public static void addVertex3f(FloatBuffer buffer, float x, float y, float z) {
    buffer.put(x);
    buffer.put(y);
    buffer.put(z);
  }

  public static void addIndex(ShortBuffer buffer, int index1, int index2,
      int index3) {
    buffer.put((short) index1);
    buffer.put((short) index2);
    buffer.put((short) index3);
  }

  public static void addCoord2f(FloatBuffer buffer, float x, float y) {
    buffer.put(x);
    buffer.put(y);
  }

  public static void addColorf(FloatBuffer buffer, float r, float g, float b,
      float a) {
    buffer.put(r);
    buffer.put(g);
    buffer.put(b);
    buffer.put(a);
  }

  public static FloatBuffer toFloatBufferPositionZero(float[] values) {
    ByteBuffer vbb = ByteBuffer.allocateDirect(values.length * 4);
    vbb.order(ByteOrder.nativeOrder());
    FloatBuffer buffer = vbb.asFloatBuffer();
    buffer.put(values);
    buffer.position(0);
    return buffer;
  }

  public static ShortBuffer toShortBuffer(short[] values) {
    ByteBuffer vbb = ByteBuffer.allocateDirect(values.length * 2);
    vbb.order(ByteOrder.nativeOrder());
    ShortBuffer buffer = vbb.asShortBuffer();
    buffer.put(values);
    buffer.position(0);
    return buffer;
  }

  public static Bitmap loadBitmap(Context mContext, int id) {
    InputStream is = mContext.getResources().openRawResource(id);
    Bitmap bitmap = null;
    try {
      bitmap = BitmapFactory.decodeStream(is);
    } finally {
      try {
        is.close();
      } catch (IOException e) {
        // Ignore.
      }
    }
    return bitmap;
  }

}

   
    
    
  








Related examples in the same category

1.Wrapper activity demonstrating the use of GLSurfaceView, a view that uses OpenGL drawing into a dedicated surface.
2.Check for OpenGL ES 2.0 support at runtime, and then use either OpenGL ES 1.0 or OpenGL ES 2.0, as appropriate.
3.A GLSurfaceView.Renderer that uses the Android-specific android.opengl.GLESXXX static OpenGL ES APIs.
4.Wrapper activity demonstrating the use of {@link GLSurfaceView}, a view that uses OpenGL drawing into a dedicated surface.
5.Demonstrate how to use the OES_texture_cube_map extension, available on some high-end OpenGL ES 1.x GPUs.
6.OpenGL objects
7.OpenGL Sprite Text Activity
8.An OpenGL ES renderer based on the GLSurfaceView rendering framework.
9.OpenGL Utils
10.Graphics API supports both OpenGL and Android 2D rendering targets efficiently through the same interface
11.OpenGL ES version of a sprite
12.Demonstrate how to use ETC1 format compressed textures.