Subversion Repositories AndroidProjects

Rev

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

}