Subversion Repositories AndroidProjects

Rev

Rev 34 | Rev 36 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package com.gebauz.framework.util;

import java.io.IOException;
import java.io.InputStream;

import javax.microedition.khronos.opengles.GL10;


import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.opengl.GLUtils;

public class Texture extends Resource {
       
        private int mTextureID[] = new int[1];
        private int mResourceID = -1;
       
        public int width;
        public int height;
       
        public Texture()
        {      
        }
       
        public void recreate()
        {
                if (mResourceID != -1)
                {
                        loadTexture(mResourceID);
                }
        }
       
        public void loadTexture(int resourceID)
        {
                GL10 gl = GLUtil.getGL();
               
                Resources resources = ResourceManager.getResources();
                InputStream is = resources.openRawResource(resourceID);
                Bitmap bitmap = null;
                try
                {
                        bitmap = BitmapFactory.decodeStream(is);
                }
                finally
                {
                        try
                        {
                                is.close();
                                is = null;
                        }
                        catch (IOException e)
                        {                              
                        }
                }
               
                width = bitmap.getWidth();
                height = bitmap.getHeight();
                mResourceID = resourceID;
               
                createTexture();
               
                GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
               
                bitmap.recycle();
        }
       
        public void createTexture()
        {
                GL10 gl = GLUtil.getGL();
               
                gl.glGenTextures(1, mTextureID, 0);
                gl.glBindTexture(GL10.GL_TEXTURE_2D, mTextureID[0]);
               
                gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR);
                gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);
               
                gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_CLAMP_TO_EDGE);
                gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_CLAMP_TO_EDGE);
        }
       
        public void bind()
        {
                GL10 gl = GLUtil.getGL();
                gl.glBindTexture(GL10.GL_TEXTURE_2D, mTextureID[0]);
        }
       
        public void unbind()
        {
                GL10 gl = GLUtil.getGL();
                gl.glBindTexture(GL10.GL_TEXTURE_2D, 0);
        }
       
        public final int getHandle()
        {
                return mTextureID[0];
        }

}