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];
}
}