Subversion Repositories AndroidProjects

Rev

Rev 1080 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package com.gebauz.bauzoid.graphics;

import com.badlogic.gdx.Gdx;
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;

/** Simple Shader for primitive rendering (lines, etc.) such as for debugging. */
public class PrimitiveShader extends GraphicsObject
{
        // Constants========================================================================================

        // Embedded Types===================================================================================

        // Fields===========================================================================================

        private ShaderProgram mShader = null;
       
        private ShaderUniform mColorHandle = null;

        // Methods==========================================================================================
                       
        public PrimitiveShader(Graphics graphics)
        {
                super(graphics);

                mShader = ShaderUtil.createShaderFromFile(graphics,
                                Gdx.files.internal("data/bauzoid/shaders/primitive.vert"),
                                Gdx.files.internal("data/bauzoid/shaders/primitive.frag"));
               
                if (mShader != null)
                {
                        mColorHandle = mShader.getUniform("uColor");
                }
               
                // TODO: fail condition -> terminate program
        }
       
        /** Destroy Primitive 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(Vector4 color)
        {
                mShader.activate();
                mColorHandle.set(color);
        }
       
        /** Deactivate shader. */
        public void deactivate()
        {
                mShader.deactivate();
        }
       
        // Getters/Setters==================================================================================

}