Blame |
Last modification |
View Log
| RSS feed
package com.gebauz.bauzoid.gamestates;
import com.badlogic.gdx.Gdx;
import com.gebauz.bauzoid.graphics.Graphics;
import com.gebauz.bauzoid.graphics.GraphicsObject;
import com.gebauz.bauzoid.graphics.model.GeometryUtil;
import com.gebauz.bauzoid.graphics.model.SimpleGeometry;
import com.gebauz.bauzoid.graphics.renderstates.RenderStates;
import com.gebauz.bauzoid.graphics.renderstates.BlendingStates.BlendingMode;
import com.gebauz.bauzoid.graphics.shader.ShaderProgram;
import com.gebauz.bauzoid.graphics.shader.ShaderUniform;
import com.gebauz.bauzoid.graphics.shader.ShaderUtil;
import com.gebauz.bauzoid.math.Matrix4;
import com.gebauz.bauzoid.math.Vector4;
public class ScreenFader
extends GraphicsObject
{
private SimpleGeometry mQuad =
null;
private ShaderProgram mShader =
null;
private ShaderUniform mAlpha =
null;
private Vector4 mFadeColor =
new Vector4
(0.0f, 0.0f, 0.0f, 0.0f
);
public ScreenFader
(Graphics graphics
)
{
super(graphics
);
}
public void init
()
{
mQuad = GeometryUtil.
createQuad(getGraphics
(), -1.0f, -1.0f, 1.0f, 1.0f
);
mShader = ShaderUtil.
createShaderFromFile(getGraphics
(), Gdx.
files.
internal("data/shaders/screenfader.vert"), Gdx.
files.
internal("data/shaders/screenfader.frag"));
if (mShader
!=
null)
{
mAlpha = mShader.
getUniform("uAlpha");
}
}
public void exit
()
{
if (mQuad
!=
null)
{
mAlpha =
null;
mQuad.
dispose();
mQuad =
null;
}
if (mShader
!=
null)
{
mShader.
dispose();
mShader =
null;
}
}
public void update
(float deltaTime
)
{
}
public void render
()
{
RenderStates rs = getGraphics
().
renderStates;
Matrix4 modelMatrix = Matrix4.
createIdentity();
rs.
pushModelMatrix();
{
rs.
model = modelMatrix
;
mShader.
activate();
{
mAlpha.
set(mFadeColor
);
rs.
blending.
setEnabled(true);
rs.
blending.
setBlendingMode(BlendingMode.
ALPHABLEND);
rs.
culling.
setEnabled(false);
rs.
depthTest.
setEnabled(false);
rs.
activate();
{
mQuad.
render();
}
rs.
deactivate();
}
mShader.
deactivate();
}
rs.
popModelMatrix();
}
public void setFadeColor
(float r,
float g,
float b,
float a
)
{
mFadeColor.
x = r
;
mFadeColor.
y = g
;
mFadeColor.
z = b
;
mFadeColor.
w = a
;
}
}