Blame |
Last modification |
View Log
| RSS feed
package com.gebauz.bauzoid.graphics.texture;
import java.nio.IntBuffer;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.gebauz.bauzoid.graphics.Graphics;
import com.gebauz.bauzoid.graphics.GraphicsObject;
/** Texture base class. */
@
Deprecated
public class Texture
extends GraphicsObject
{
/** Filtering Mode. */
public enum Filter
{
NEAREST,
LINEAR
};
/** Texture Wrap Mode. */
public enum WrapMode
{
MIRRORED_REPEAT,
CLAMP_TO_EDGE,
REPEAT
};
protected int mTextureID =
0;
protected static IntBuffer TEXID =
IntBuffer.
allocate(1);
protected Filter mMinFilter =
Filter.
LINEAR;
protected Filter mMagFilter =
Filter.
LINEAR;
protected WrapMode mWrapModeS = WrapMode.
CLAMP_TO_EDGE;
protected WrapMode mWrapModeT = WrapMode.
CLAMP_TO_EDGE;
private int mWidth =
0;
private int mHeight =
0;
/** Constructor. */
public Texture
(Graphics graphics
)
{
super(graphics
);
}
/** Create basic texture ID - no actual texture data yet. */
public void createTexture
()
{
Gdx.
gl.
glGenTextures(1, TEXID
);
mTextureID = TEXID.
get(0);
setFiltering
(mMinFilter, mMagFilter
);
setWrapMode
(mWrapModeS, mWrapModeT
);
}
/** Destroy Opengl Texture resource. */
public void destroyTexture
()
{
if (mTextureID
!=
0)
{
TEXID.
put(0, mTextureID
);
Gdx.
gl.
glDeleteTextures(1, TEXID
);
mTextureID =
0;
}
}
/** Bind the texture. */
public void bind
(int textureStage
)
{
//getGraphics().renderStates.getTextureStage(textureStage).bindTexture(this);
}
/** Unbind the texture.
* Theoretically this is not really related to this texture at all - it just unbinds
* any texture from textureStage.
*/
public void unbind
(int textureStage
)
{
//getGraphics().renderStates.getTextureStage(textureStage).bindTexture(null);
}
/** Get the OpenGL Texture ID. */
public final int getHandle
()
{
return mTextureID
;
}
/** Set filter mode. */
public final void setFiltering
(Filter minFilter,
Filter magFilter
)
{
bind
(0);
mMinFilter = minFilter
;
switch (mMinFilter
)
{
case NEAREST:
Gdx.
gl.
glTexParameterf(GL20.
GL_TEXTURE_2D, GL20.
GL_TEXTURE_MIN_FILTER, GL20.
GL_NEAREST);
break;
case LINEAR:
Gdx.
gl.
glTexParameterf(GL20.
GL_TEXTURE_2D, GL20.
GL_TEXTURE_MIN_FILTER, GL20.
GL_LINEAR);
break;
}
mMagFilter = magFilter
;
switch (mMagFilter
)
{
case NEAREST:
Gdx.
gl.
glTexParameterf(GL20.
GL_TEXTURE_2D, GL20.
GL_TEXTURE_MAG_FILTER, GL20.
GL_NEAREST);
break;
case LINEAR:
Gdx.
gl.
glTexParameterf(GL20.
GL_TEXTURE_2D, GL20.
GL_TEXTURE_MAG_FILTER, GL20.
GL_LINEAR);
break;
}
}
/** Get the minification filter. */
public final Filter getMinFilter
()
{
return mMinFilter
;
}
/** Get the magnification filter. */
public final Filter getMagFilter
()
{
return mMagFilter
;
}
/** Set wrap mode. */
public final void setWrapMode
(WrapMode wrapModeS, WrapMode wrapModeT
)
{
bind
(0);
mWrapModeS = wrapModeS
;
switch (mWrapModeS
)
{
case MIRRORED_REPEAT:
Gdx.
gl.
glTexParameterf(GL20.
GL_TEXTURE_2D, GL20.
GL_TEXTURE_WRAP_S, GL20.
GL_MIRRORED_REPEAT);
break;
case CLAMP_TO_EDGE:
Gdx.
gl.
glTexParameterf(GL20.
GL_TEXTURE_2D, GL20.
GL_TEXTURE_WRAP_S, GL20.
GL_CLAMP_TO_EDGE);
break;
case REPEAT:
Gdx.
gl.
glTexParameterf(GL20.
GL_TEXTURE_2D, GL20.
GL_TEXTURE_WRAP_S, GL20.
GL_REPEAT);
break;
}
mWrapModeT = wrapModeT
;
switch (mWrapModeT
)
{
case MIRRORED_REPEAT:
Gdx.
gl.
glTexParameterf(GL20.
GL_TEXTURE_2D, GL20.
GL_TEXTURE_WRAP_T, GL20.
GL_MIRRORED_REPEAT);
break;
case CLAMP_TO_EDGE:
Gdx.
gl.
glTexParameterf(GL20.
GL_TEXTURE_2D, GL20.
GL_TEXTURE_WRAP_T, GL20.
GL_CLAMP_TO_EDGE);
break;
case REPEAT:
Gdx.
gl.
glTexParameterf(GL20.
GL_TEXTURE_2D, GL20.
GL_TEXTURE_WRAP_T, GL20.
GL_REPEAT);
break;
}
}
/** Get the S-axis wrap mode. */
public final WrapMode getWrapModeS
()
{
return mWrapModeS
;
}
/** Get the T-axis wrap mode. */
public final WrapMode getWrapModeT
()
{
return mWrapModeT
;
}
}