Subversion Repositories AndroidProjects

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1671 chris 1
package com.gebauz.bauzoid.gamestates;
2
 
3
import com.badlogic.gdx.Gdx;
4
import com.gebauz.bauzoid.graphics.Graphics;
5
import com.gebauz.bauzoid.graphics.GraphicsObject;
6
import com.gebauz.bauzoid.graphics.model.GeometryUtil;
7
import com.gebauz.bauzoid.graphics.model.SimpleGeometry;
8
import com.gebauz.bauzoid.graphics.renderstates.RenderStates;
9
import com.gebauz.bauzoid.graphics.renderstates.BlendingStates.BlendingMode;
10
import com.gebauz.bauzoid.graphics.shader.ShaderProgram;
11
import com.gebauz.bauzoid.graphics.shader.ShaderUniform;
12
import com.gebauz.bauzoid.graphics.shader.ShaderUtil;
13
import com.gebauz.bauzoid.math.Matrix4;
14
import com.gebauz.bauzoid.math.Vector4;
15
 
16
public class ScreenFader extends GraphicsObject
17
{
18
        private SimpleGeometry mQuad = null;
19
        private ShaderProgram mShader = null;
20
        private ShaderUniform mAlpha = null;
21
        private Vector4 mFadeColor = new Vector4(0.0f, 0.0f, 0.0f, 0.0f);
22
 
23
        public ScreenFader(Graphics graphics)
24
        {
25
                super(graphics);
26
        }
27
 
28
        public void init()
29
        {
30
                mQuad = GeometryUtil.createQuad(getGraphics(), -1.0f, -1.0f, 1.0f, 1.0f);
31
                mShader = ShaderUtil.createShaderFromFile(getGraphics(), Gdx.files.internal("data/bauzoid/shaders/screenfader.vert"), Gdx.files.internal("data/bauzoid/shaders/screenfader.frag"));
32
 
33
                if (mShader != null)
34
                {
35
                        mAlpha = mShader.getUniform("uAlpha");
36
                }
37
        }
38
 
39
        public void exit()
40
        {
41
                if (mQuad != null)
42
                {
43
                        mAlpha = null;
44
                        mQuad.dispose();
45
                        mQuad = null;
46
                }
47
 
48
                if (mShader != null)
49
                {
50
                        mShader.dispose();
51
                        mShader = null;
52
                }              
53
        }
54
 
55
        public void update(float deltaTime)
56
        {
57
 
58
        }
59
 
60
        public void render()
61
        {
62
                RenderStates rs = getGraphics().renderStates;
63
 
64
                Matrix4 modelMatrix = Matrix4.createIdentity();
65
                rs.pushModelMatrix();
66
                {
67
                        rs.model = modelMatrix;
68
 
69
                        mShader.activate();
70
                        {
71
                                mAlpha.set(mFadeColor);
72
 
73
                                rs.blending.setEnabled(true);
74
                                rs.blending.setBlendingMode(BlendingMode.ALPHABLEND);
75
                                rs.culling.setEnabled(false);
76
                                rs.depthTest.setEnabled(false);
77
                                rs.activate();
78
                                {
79
                                        mQuad.render();
80
                                }
81
                                rs.deactivate();
82
                        }
83
                        mShader.deactivate();
84
                }
85
                rs.popModelMatrix();
86
        }
87
 
88
        public void setFadeColor(float r, float g, float b, float a)
89
        {
90
                mFadeColor.x = r;
91
                mFadeColor.y = g;
92
                mFadeColor.z = b;
93
                mFadeColor.w = a;
94
        }
95
 
96
}