Android Open Source - min3d Texture Manager






From Project

Back to project page min3d.

License

The source code is released under:

MIT License

If you think the Android project min3d listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.min3d.lib.core;
/*from w  w w.j a v  a2s.  co m*/
import android.graphics.Bitmap;
import android.util.Log;

import com.min3d.lib.Min3d;
import com.min3d.lib.Shared;

import java.util.HashMap;
import java.util.Set;

/**
 * TextureManager is responsible for managing textures for the whole environment. 
 * It maintains a list of id's that are mapped to the GL texture names (id's).
 * 
 * You add a Bitmap to the TextureManager, which adds a textureId to its list.
 * Then, you assign one or more TextureVo's to your Object3d's using id's that 
 * exist in the TextureManager.
 * 
 * Note that the _idToTextureName and _idToHasMipMap HashMaps used below
 * don't test for exceptions. 
 */
public class TextureManager 
{
  private HashMap<String, Integer> _idToTextureName;
  private HashMap<String, Boolean> _idToHasMipMap;
  private static int _counter = 1000001;
  private static int _atlasId = 0;
  
  
  public TextureManager()
  {
    reset();
  }

  public void reset()
  {
    // Delete any extant textures

    if (_idToTextureName != null) 
    {
      Set<String> s = _idToTextureName.keySet();
      Object[] a = s.toArray(); 
      for (int i = 0; i < a.length; i++) {
        int glId = getGlTextureId((String)a[i]);
        Shared.renderer().deleteTexture(glId);
      }
      // ...pain
    }
    
    _idToTextureName = new HashMap<String, Integer>();
    _idToHasMipMap = new HashMap<String, Boolean>();
  }

  /**
   * 'Uploads' a texture via OpenGL which is mapped to a textureId to the TextureManager, 
   * which can subsequently be used to assign textures to Object3d's. 
   * 
   * @return The textureId as added to TextureManager, which is identical to $id 
   */
  public String addTextureId(Bitmap $b, String $id, boolean $generateMipMap)
  {
    if (_idToTextureName.containsKey($id)) throw new Error("Texture id \"" + $id + "\" already exists."); 

    int glId = Shared.renderer().uploadTextureAndReturnId($b, $generateMipMap);

    String s = $id;
    _idToTextureName.put(s, glId);
    _idToHasMipMap.put(s, $generateMipMap);
  
    _counter++;
    
    // For debugging purposes (potentially adds a lot of chatter)
    // logContents();
    
    return s;
  }

  /**
   * Alternate signature for "addTextureId", with MIP mapping set to false by default.
   * Kept for API backward-compatibility. 
   */
  public String addTextureId(Bitmap $b, String $id)
  {
    return this.addTextureId($b, $id, false);
  }
  
  /**
   * 'Uploads' texture via OpenGL and returns an autoassigned textureId,
   * which can be used to assign textures to Object3d's. 
   */
  public String createTextureId(Bitmap $b, boolean $generateMipMap)
  {
    return addTextureId($b, (_counter+""), $generateMipMap);
  }
  
  /**
   * Deletes a textureId from the TextureManager,  
   * and deletes the corresponding texture from the GPU
   */
  public void deleteTexture(String $textureId)
  {
    int glId = _idToTextureName.get($textureId);
    Shared.renderer().deleteTexture(glId);
    _idToTextureName.remove($textureId);
    _idToHasMipMap.remove($textureId);
    
    // logContents();
    
    //xxx needs error check
  }

  /**
   * Returns a String Array of textureId's in the TextureManager 
   */
  public String[] getTextureIds()
  {
    Set<String> set = _idToTextureName.keySet();
    String[] a = new String[set.size()];
    set.toArray(a);
    return a;
  }
  
  /**
   * Used by Renderer
   * 
   */
  int getGlTextureId(String $textureId) /*package-private*/
  {
    return _idToTextureName.get($textureId);
  }
  
  /**
   * Used by Renderer
   */
  boolean hasMipMap(String $textureId) /*package-private*/
  {
    return _idToHasMipMap.get($textureId);
  }
  

  public boolean contains(String $textureId)
  {
    return _idToTextureName.containsKey($textureId);
  }
  
  
  private String arrayToString(String[] $a)
  {
    String s = "";
    for (int i = 0; i < $a.length; i++)
    {
      s += $a[i].toString() + " | ";
    }
    return s;
  }
  
  private void logContents()
  {
    Log.v(Min3d.TAG, "TextureManager contents updated - " + arrayToString( getTextureIds() ) );
  }
  
  public String getNewAtlasId() {
    return "atlas".concat(Integer.toString(_atlasId++));
  }
}




Java Source Code List

com.min3d.ApplicationTest.java
com.min3d.ExampleAccelerometer.java
com.min3d.ExampleAnimatedTexture.java
com.min3d.ExampleAnimatingVertices.java
com.min3d.ExampleAssigningTexturesDynamically.java
com.min3d.ExampleCamera.java
com.min3d.ExampleFog.java
com.min3d.ExampleFromScratch.java
com.min3d.ExampleInsideLayout.java
com.min3d.ExampleKeyframeAnimation.java
com.min3d.ExampleLightProperties.java
com.min3d.ExampleLoad3DSFile.java
com.min3d.ExampleLoadMD2File.java
com.min3d.ExampleLoadObjFileMultiple.java
com.min3d.ExampleLoadObjFile.java
com.min3d.ExampleMipMap.java
com.min3d.ExampleMostMinimal.java
com.min3d.ExampleMultiTexture.java
com.min3d.ExampleMultipleLights.java
com.min3d.ExampleRenderType.java
com.min3d.ExampleRotatingPlanets.java
com.min3d.ExampleSubsetOfFaces.java
com.min3d.ExampleTextureOffset.java
com.min3d.ExampleTextureWrap.java
com.min3d.ExampleTextures.java
com.min3d.ExampleTransparentGlSurface.java
com.min3d.ExampleVertexColors.java
com.min3d.ExampleVerticesVariations.java
com.min3d.ScratchActivity.java
com.min3d.SplashActivity.java
com.min3d.lib.AParser.java
com.min3d.lib.ApplicationTest.java
com.min3d.lib.IParser.java
com.min3d.lib.LittleEndianDataInputStream.java
com.min3d.lib.MD2Parser.java
com.min3d.lib.Max3DSParser.java
com.min3d.lib.Min3d.java
com.min3d.lib.ObjParser.java
com.min3d.lib.ParseObjectData.java
com.min3d.lib.ParseObjectFace.java
com.min3d.lib.Parser.java
com.min3d.lib.Shared.java
com.min3d.lib.Utils.java
com.min3d.lib.animation.AnimationObject3d.java
com.min3d.lib.animation.KeyFrame.java
com.min3d.lib.core.Color4BufferList.java
com.min3d.lib.core.FacesBufferedList.java
com.min3d.lib.core.ManagedLightList.java
com.min3d.lib.core.Number3dBufferList.java
com.min3d.lib.core.Object3dContainer.java
com.min3d.lib.core.Object3d.java
com.min3d.lib.core.RenderCaps.java
com.min3d.lib.core.RendererActivity.java
com.min3d.lib.core.Renderer.java
com.min3d.lib.core.Scene.java
com.min3d.lib.core.TextureList.java
com.min3d.lib.core.TextureManager.java
com.min3d.lib.core.UvBufferList.java
com.min3d.lib.core.Vertices.java
com.min3d.lib.interfaces.IDirtyManaged.java
com.min3d.lib.interfaces.IDirtyParent.java
com.min3d.lib.interfaces.IObject3dContainer.java
com.min3d.lib.interfaces.ISceneController.java
com.min3d.lib.objectPrimitives.Box.java
com.min3d.lib.objectPrimitives.HollowCylinder.java
com.min3d.lib.objectPrimitives.Rectangle.java
com.min3d.lib.objectPrimitives.SkyBox.java
com.min3d.lib.objectPrimitives.Sphere.java
com.min3d.lib.objectPrimitives.Torus.java
com.min3d.lib.vos.AbstractDirtyManaged.java
com.min3d.lib.vos.BooleanManaged.java
com.min3d.lib.vos.CameraVo.java
com.min3d.lib.vos.Color4Managed.java
com.min3d.lib.vos.Color4.java
com.min3d.lib.vos.Face.java
com.min3d.lib.vos.FloatManaged.java
com.min3d.lib.vos.FogType.java
com.min3d.lib.vos.FrustumManaged.java
com.min3d.lib.vos.LightType.java
com.min3d.lib.vos.Light.java
com.min3d.lib.vos.Number3dManaged.java
com.min3d.lib.vos.Number3d.java
com.min3d.lib.vos.RenderType.java
com.min3d.lib.vos.ShadeModelManaged.java
com.min3d.lib.vos.ShadeModel.java
com.min3d.lib.vos.TexEnvxVo.java
com.min3d.lib.vos.TextureVo.java
com.min3d.lib.vos.Uv.java
com.min3d.lib.vos.Vertex3d.java