Blame |
Last modification |
View Log
| RSS feed
package com.gebauz.bauzoid.graphics.sprite;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Texture;
import com.gebauz.bauzoid.graphics.Graphics;
import com.gebauz.bauzoid.graphics.GraphicsObject;
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.Vector4;
/** Encapsulates the globally used shader for sprite rendering. */
public class SpriteShader
extends GraphicsObject
{
private ShaderProgram mShader =
null;
private ShaderUniform mTextureHandle =
null;
private ShaderUniform mAlphaHandle =
null;
private ShaderUniform mColorHandle =
null;
/** Constructor. */
public SpriteShader
(Graphics graphics
)
{
super(graphics
);
mShader = ShaderUtil.
createShaderFromFile(graphics,
Gdx.
files.
internal("data/bauzoid/shaders/spriteshader.vert"),
Gdx.
files.
internal("data/bauzoid/shaders/spriteshader.frag"));
if (mShader
!=
null)
{
mTextureHandle = mShader.
getUniform("uDiffuse");
mAlphaHandle = mShader.
getUniform("uAlpha");
mColorHandle = mShader.
getUniform("uColor");
}
// TODO: fail condition -> terminate program
}
/** Destroy Sprite Shader. */
public void dispose
()
{
if (mShader
!=
null)
{
mShader.
dispose();
mShader =
null;
}
}
/** Get reference to shader. */
public final ShaderProgram getShader
()
{
return mShader
;
}
/** Activate shader with specified variables. */
public void activate
(Texture texture,
float alpha, Vector4 color
)
{
mShader.
activate();
mTextureHandle.
set(0);
mAlphaHandle.
set(alpha
);
mColorHandle.
set(color
);
getRenderStates
().
getTextureStage(0).
bindTexture(texture
);
//mAlphaHandle.set(alpha);
}
/** Deactivate shader. */
public void deactivate
()
{
mShader.
deactivate();
}
}