package com.badlogic.gdx.graphics.glutils;
import com.badlogic.gdx.graphics.GLTexture;
import com.badlogic.gdx.graphics.Pixmap;
import com.badlogic.gdx.graphics.Pixmap.Format;
import com.badlogic.gdx.graphics.TextureData;
import com.badlogic.gdx.utils.GdxRuntimeException;
/** This class will load each contained TextureData to the chosen mipmap level.
* All the mipmap levels must be defined and cannot be null. */
public class MipMapTextureData implements TextureData{
TextureData[] mips;
/** @param mipMapData must be != null and its length must be >= 1 */
public MipMapTextureData(TextureData... mipMapData){
mips = new TextureData[mipMapData.length];
System.arraycopy(mipMapData, 0, mips, 0, mipMapData.length);
}
@Override
public TextureDataType getType () {
return TextureDataType.Custom;
}
@Override
public boolean isPrepared () {
return true;
}
@Override
public void prepare () {}
@Override
public Pixmap consumePixmap () {
throw new GdxRuntimeException("It's compressed, use the compressed method");
}
@Override
public boolean disposePixmap () {
return false;
}
@Override
public void consumeCustomData (int target) {
for(int i=0; i < mips.length; ++i){
GLTexture.uploadImageData(target, mips[i], i);
}
}
@Override
public int getWidth () {
return mips[0].getWidth();
}
@Override
public int getHeight () {
return mips[0].getHeight();
}
@Override
public Format getFormat () {
return mips[0].getFormat();
}
@Override
public boolean useMipMaps () {
return false;
}
@Override
public boolean isManaged () {
return true;
}
}