Advertisement
Guest User

Untitled

a guest
Aug 9th, 2013
363
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.30 KB | None | 0 0
  1. package com.androidgames.framework.gl;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5.  
  6. import javax.microedition.khronos.opengles.GL10;
  7.  
  8. import android.graphics.Bitmap;
  9. import android.graphics.BitmapFactory;
  10. import android.opengl.GLUtils;
  11.  
  12. import com.androidgames.framework.FileIO;
  13. import com.androidgames.framework.impl.GLGame;
  14. import com.androidgames.framework.impl.GLGraphics;
  15.  
  16. public class Texture {
  17.    
  18.     GLGraphics glGraphics;
  19.     FileIO fileIO;
  20.     String fileName;
  21.     int textureId;
  22.     int minFilter, magFilter;
  23.     int width, height;
  24.    
  25.     public Texture(GLGame glGame, String fileName) {
  26.         this.glGraphics = glGame.getGLGraphics();
  27.         this.fileIO = glGame.getFileIO();
  28.         this.fileName = fileName;
  29.        
  30.         load();
  31.     }
  32.    
  33.     private void load() {
  34.         GL10 gl = glGraphics.getGL();
  35.        
  36.         int[] textureIds = new int[1];
  37.         gl.glGenTextures(1, textureIds, 0);
  38.         textureId = textureIds[0];
  39.        
  40.         InputStream in = null;
  41.         try {
  42.             in = fileIO.readAsset(fileName);
  43.             Bitmap bitmap = BitmapFactory.decodeStream(in);
  44.             width = bitmap.getWidth();
  45.             height = bitmap.getHeight();
  46.            
  47.             gl.glBindTexture(GL10.GL_TEXTURE_2D, textureId);
  48.             GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
  49.            
  50.             setFilters(GL10.GL_NEAREST, GL10.GL_NEAREST);
  51.             gl.glBindTexture(GL10.GL_TEXTURE_2D, 0);
  52.         } catch(IOException e) {
  53.             throw new RuntimeException("Couldn't load texture '" + fileName + "'", e);
  54.         } finally {
  55.             if(in != null) {
  56.                 try { in.close(); }
  57.                 catch(IOException e) { e.printStackTrace(); }
  58.             }
  59.         }
  60.     }
  61.    
  62.     public void reload() {
  63.         load();
  64.         bind();
  65.         setFilters(minFilter, magFilter);
  66.        
  67.         glGraphics.getGL().glBindTexture(GL10.GL_TEXTURE_2D, 0);
  68.     }
  69.    
  70.     public void setFilters(int minFilter, int magFilter) {
  71.         this.minFilter = minFilter;
  72.         this.magFilter = magFilter;
  73.        
  74.         GL10 gl = glGraphics.getGL();
  75.         gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, minFilter);
  76.         gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, magFilter);
  77.     }
  78.    
  79.     public void bind() {
  80.         GL10 gl = glGraphics.getGL();
  81.         gl.glBindTexture(GL10.GL_TEXTURE_2D, textureId);
  82.     }
  83.    
  84.     public void dispose() {
  85.         GL10 gl = glGraphics.getGL();
  86.         gl.glBindTexture(GL10.GL_TEXTURE_2D, textureId);
  87.        
  88.         int[] textureIds = { textureId };
  89.         gl.glDeleteTextures(1, textureIds, 0);
  90.     }
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement