Subversion Repositories AndroidProjects

Rev

Blame | Last modification | View Log | RSS feed

package com.gebauz.pingK.common.framework.renderstates;

/** RenderStates
 * Manage render states, tracking changes, supporting locking, and applying state switches only if necessary.
 * Usage example:
 *    renderStates.blending.setBlendingMode(BlendingStates.BlendingMode.MULTIPLY);
 *    // ... set other render states
 *    renderStates.activate();
 *    // ...render object...
 *    renderStates.deactivate();
 * @author chris
 *
 */

public class RenderStates
{
        public BlendingStates blending = new BlendingStates(this);
        public CullingStates culling = new CullingStates(this);
        public DepthTestStates depthTest = new DepthTestStates(this);
       
        private TextureStage mTextureStage0 = new TextureStage(this, 0);
//      private TextureStage mTextureStage1 = new TextureStage(this, 1);

        private boolean mLocked = false;
       
        public RenderStates()
        {
        }
       
        public void initialize()
        {
                blending.initialize();
                culling.initialize();
                depthTest.initialize();
               
                mTextureStage0.initialize();
//              mTextureStage1.initialize();
        }
       
        public void activate()
        {
                activate(false);
        }
       
        public void activate(boolean force)
        {
                blending.activate(force);
                culling.activate(force);
                depthTest.activate(force);
        }
       
        public void reset()
        {
                blending.reset();
                culling.reset();
                depthTest.reset();
        }
       
        public void deactivate()
        {
                reset();
                activate(false);
        }
       
        public boolean isLocked()
        {
                return mLocked;
        }
       
        public void lock(boolean lock)
        {
                mLocked = lock;
        }
       
        public final TextureStage getTextureStage(int index)
        {
                return mTextureStage0;
        }

}