Rev 1489 |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BauzoidNET.math;
using BauzoidNET.graphics;
using BauzoidNET.graphics.shader;
using BauzoidNET.graphics.texture;
namespace BauzoidNET.graphics.sprite
{
public class SpriteShader : GraphicsObject
{
private ShaderProgram mShader = null;
private ShaderUniform mTextureHandle = null;
private ShaderUniform mAlphaHandle = null;
private ShaderUniform mColorHandle = null;
private ShaderUniform mFogColorHandle = null;
/** Constructor. */
public SpriteShader(Graphics graphics)
: base(graphics)
{
/*mShader = ShaderUtil.createShaderFromFile(graphics,
"data/bauzoid/shaders/spriteshader.vert",
"data/bauzoid/shaders/spriteshader.frag");*/
mShader = ShaderUtil.createShaderFromString(graphics, BauzoidNET.Properties.Resources.spriteshader_vert,
BauzoidNET.Properties.Resources.spriteshader_frag);
if (mShader != null)
{
mTextureHandle = mShader.getUniform("uDiffuse");
mAlphaHandle = mShader.getUniform("uAlpha");
mColorHandle = mShader.getUniform("uColor");
mFogColorHandle = mShader.getUniform("uFogColor");
}
// TODO: fail condition -> terminate program
}
/** Destroy Sprite Shader. */
public void dispose()
{
if (mShader != null)
{
mShader.dispose();
mShader = null;
}
}
/** Get reference to shader. */
public ShaderProgram getShader()
{
return mShader;
}
/** Activate shader with specified variables. */
public void activate(Texture texture, float alpha, Vector4 color, Vector4 fogColor)
{
mShader.activate();
mTextureHandle.set(0);
mAlphaHandle.set(alpha);
mColorHandle.set(color);
mFogColorHandle.set(fogColor);
getRenderStates().getTextureStage(0).bindTexture(texture);
}
/** Deactivate shader. */
public void deactivate()
{
mShader.deactivate();
}
}
}