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