Subversion Repositories AndroidProjects

Rev

Rev 1489 | Blame | Compare with Previous | Last modification | View Log | RSS feed

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using BauzoidNET.math;
using BauzoidNET.graphics;
using BauzoidNET.graphics.shader;
using BauzoidNET.graphics.texture;

namespace BauzoidNET.graphics.sprite
{
    public class SpriteShader : GraphicsObject
    {
        private ShaderProgram mShader = null;
       
            private ShaderUniform mTextureHandle = null;
            private ShaderUniform mAlphaHandle = null;
            private ShaderUniform mColorHandle = null;
        private ShaderUniform mFogColorHandle = null;
       
            /** Constructor. */
            public SpriteShader(Graphics graphics)
            : base(graphics)
            {
                    /*mShader = ShaderUtil.createShaderFromFile(graphics,
                    "data/bauzoid/shaders/spriteshader.vert",
                    "data/bauzoid/shaders/spriteshader.frag");*/


            mShader = ShaderUtil.createShaderFromString(graphics, BauzoidNET.Properties.Resources.spriteshader_vert,
                BauzoidNET.Properties.Resources.spriteshader_frag);
               
                    if (mShader != null)
                    {
                            mTextureHandle = mShader.getUniform("uDiffuse");
                            mAlphaHandle = mShader.getUniform("uAlpha");
                            mColorHandle = mShader.getUniform("uColor");
                mFogColorHandle = mShader.getUniform("uFogColor");
                    }
               
                    // TODO: fail condition -> terminate program
            }
       
            /** Destroy Sprite Shader. */
            public void dispose()
            {
                    if (mShader != null)
                    {
                            mShader.dispose();
                            mShader = null;
                    }
            }

            /** Get reference to shader. */
            public ShaderProgram getShader()
            {
                    return mShader;
            }
       
            /** Activate shader with specified variables. */
            public void activate(Texture texture, float alpha, Vector4 color, Vector4 fogColor)
            {
                    mShader.activate();
                    mTextureHandle.set(0);
                    mAlphaHandle.set(alpha);
                    mColorHandle.set(color);
            mFogColorHandle.set(fogColor);
                    getRenderStates().getTextureStage(0).bindTexture(texture);
            }
       
            /** Deactivate shader. */
            public void deactivate()
            {
                    mShader.deactivate();
            }

    }
}