Subversion Repositories AndroidProjects

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1051 chris 1
package com.gebauz.bauzoid.graphics.sprite;
2
 
3
import com.badlogic.gdx.Gdx;
4
import com.badlogic.gdx.graphics.Texture;
5
import com.gebauz.bauzoid.graphics.Graphics;
6
import com.gebauz.bauzoid.graphics.GraphicsObject;
7
import com.gebauz.bauzoid.graphics.shader.ShaderProgram;
8
import com.gebauz.bauzoid.graphics.shader.ShaderUniform;
9
import com.gebauz.bauzoid.graphics.shader.ShaderUtil;
10
import com.gebauz.bauzoid.math.Vector4;
11
 
12
/** Encapsulates the globally used shader for sprite rendering. */
13
public class SpriteShader extends GraphicsObject
14
{
15
        private ShaderProgram mShader = null;
16
 
17
        private ShaderUniform mTextureHandle = null;
18
        private ShaderUniform mAlphaHandle = null;
19
        private ShaderUniform mColorHandle = null;
20
 
21
        /** Constructor. */
22
        public SpriteShader(Graphics graphics)
23
        {
24
                super(graphics);
25
 
26
                mShader = ShaderUtil.createShaderFromFile(graphics,
27
                                Gdx.files.internal("data/bauzoid/shaders/spriteshader.vert"),
28
                                Gdx.files.internal("data/bauzoid/shaders/spriteshader.frag"));
29
 
30
                if (mShader != null)
31
                {
32
                        mTextureHandle = mShader.getUniform("uDiffuse");
33
                        mAlphaHandle = mShader.getUniform("uAlpha");
34
                        mColorHandle = mShader.getUniform("uColor");
35
                }
36
 
37
                // TODO: fail condition -> terminate program
38
        }
39
 
40
        /** Destroy Sprite Shader. */
41
        public void dispose()
42
        {
43
                if (mShader != null)
44
                {
45
                        mShader.dispose();
46
                        mShader = null;
47
                }
48
        }
49
 
50
        /** Get reference to shader. */
51
        public final ShaderProgram getShader()
52
        {
53
                return mShader;
54
        }
55
 
56
        /** Activate shader with specified variables. */
57
        public void activate(Texture texture, float alpha, Vector4 color)
58
        {
59
                mShader.activate();
60
                mTextureHandle.set(0);
61
                mAlphaHandle.set(alpha);
62
                mColorHandle.set(color);
63
                getRenderStates().getTextureStage(0).bindTexture(texture);
64
 
65
                //mAlphaHandle.set(alpha);
66
        }
67
 
68
        /** Deactivate shader. */
69
        public void deactivate()
70
        {
71
                mShader.deactivate();
72
        }
73
 
74
}
75
 
76