OpenGL ES Framework: Texture

用法:初始化后,在需要绑定的地方,比如onDrawFrame里边调用Texture.bind()函数。

public class Texture 
{
private String fileName;
private AssetManager asset;
private GL10 gl;

private int minFilter;
private int magFilter;

private int textureId;

public Texture(GL10 gl, AssetManager asset, String fileName)
{
this.fileName = fileName;
this.asset = asset;
this.gl = gl;

load();
}

private void load()
{
int textureIds[] = new int[1];
gl.glGenTextures(1, textureIds, 0);
textureId = textureIds[0];

try
{
Bitmap bitmap = BitmapFactory.decodeStream(asset.open(fileName));
gl.glBindTexture(GL10.GL_TEXTURE_2D, textureId);
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
setFilters(GL10.GL_NEAREST, GL10.GL_NEAREST);
gl.glBindTexture(GL10.GL_TEXTURE_2D, 0);

} catch (IOException e)
{
e.printStackTrace();
}
}

public void setFilters(int minFilter, int magFilter)
{
this.minFilter = minFilter;
this.magFilter = magFilter;

gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, minFilter);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, magFilter);
}

public void bind()
{
gl.glEnable(GL10.GL_TEXTURE_2D);
gl.glBindTexture(GL10.GL_TEXTURE_2D, textureId);
}

public void dispose()
{
gl.glBindTexture(GL10.GL_TEXTURE_2D, textureId);
int[] textureIds = {textureId};
gl.glDeleteTextures(1, textureIds, 0);
}
}


 

posted @ 2011-12-18 15:11  LiLiNiuNiu  阅读(563)  评论(0)    收藏  举报