OgreGLES2NullStateCacheManagerImp.h
Go to the documentation of this file.
00001 /*
00002  -----------------------------------------------------------------------------
00003  This source file is part of OGRE
00004  (Object-oriented Graphics Rendering Engine)
00005  For the latest info, see http://www.ogre3d.org/
00006  
00007  Copyright (c) 2000-2013 Torus Knot Software Ltd
00008  
00009  Permission is hereby granted, free of charge, to any person obtaining a copy
00010  of this software and associated documentation files (the "Software"), to deal
00011  in the Software without restriction, including without limitation the rights
00012  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
00013  copies of the Software, and to permit persons to whom the Software is
00014  furnished to do so, subject to the following conditions:
00015  
00016  The above copyright notice and this permission notice shall be included in
00017  all copies or substantial portions of the Software.
00018  
00019  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
00020  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00021  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
00022  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
00023  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
00024  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
00025  THE SOFTWARE.
00026  -----------------------------------------------------------------------------
00027  */
00028 
00029 #ifndef __GLES2NullStateCacheManagerImp_H__
00030 #define __GLES2NullStateCacheManagerImp_H__
00031 
00032 #include "OgreGLES2Prerequisites.h"
00033 
00034 typedef Ogre::GeneralAllocatedObject StateCacheAlloc;
00035 
00036 namespace Ogre
00037 {
00041     class GLES2StateCacheManagerImp : public StateCacheAlloc
00042     {
00043     private:        
00045         vector<GLclampf>::type mClearColour;
00047         vector<GLboolean>::type mColourMask;
00049         GLboolean mDepthMask;
00051         GLenum mPolygonMode;
00053         GLenum mBlendEquation;
00055         GLenum mCullFace;
00057         GLenum mDepthFunc;
00059         GLuint mStencilMask;
00061         unsigned char mActiveTextureUnit;
00063         unsigned int mDiscardBuffers;
00065         GLclampf mClearDepth;
00066         
00067     public:
00068         GLES2StateCacheManagerImp(void);
00069         ~GLES2StateCacheManagerImp(void);
00070         
00072         void initializeCache();
00073         
00075         void clearCache();
00076         
00078         void bindGLBuffer(GLenum target, GLuint buffer, bool force = false);
00079         
00081         void deleteGLBuffer(GLenum target, GLuint buffer, bool force = false);
00082         
00084         void bindGLTexture(GLenum target, GLuint texture);
00085 
00087         void invalidateStateForTexture(GLuint texture);
00088 
00090         void setTexParameteri(GLenum target, GLenum pname, GLint param);
00091 
00093         void setTexParameterf(GLenum target, GLenum pname, GLfloat params);
00094 
00096         void getTexParameterfv(GLenum target, GLenum pname, GLfloat *params);
00097 
00099         bool activateGLTextureUnit(unsigned char unit);
00100         
00102         GLenum getBlendEquation(void) const { return mBlendEquation; }
00103         
00105         void setBlendEquation(GLenum eq);
00106         
00108         void setBlendFunc(GLenum source, GLenum dest);
00109         
00111         GLboolean getDepthMask(void) const { return mDepthMask; }
00112         
00114         void setDepthMask(GLboolean mask);
00115         
00117         GLenum getDepthFunc(void) const { return mDepthFunc; }
00118         
00120         void setDepthFunc(GLenum func);
00121         
00123         GLclampf getClearDepth(void) const { return mClearDepth; }
00124         
00126         void setClearDepth(GLclampf depth);
00127         
00129         void setClearColour(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
00130         
00132         vector<GLboolean>::type & getColourMask(void) { return mColourMask; }
00133         
00135         void setColourMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
00136         
00138         GLuint getStencilMask(void) const { return mStencilMask; }
00139         
00141         void setStencilMask(GLuint mask);
00142         
00144         void setEnabled(GLenum flag);
00145         
00147         void setDisabled(GLenum flag);
00148 
00150         void setVertexAttribEnabled(GLuint attrib);
00151 
00153         void setVertexAttribDisabled(GLuint attrib);
00154 
00156         unsigned int getDiscardBuffers(void) const { return mDiscardBuffers; }
00157         
00159         void setDiscardBuffers(unsigned int flags) { mDiscardBuffers = flags; }
00160         
00162         GLenum getPolygonMode(void) const { return mPolygonMode; }
00163         
00165         void setPolygonMode(GLenum mode) { mPolygonMode = mode; }
00166         
00168         GLenum getCullFace(void) const { return mCullFace; }
00169         
00171         void setCullFace(GLenum face);
00172     };
00173 }
00174 
00175 #endif

Copyright © 2012 Torus Knot Software Ltd
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Last modified Mon Jul 27 2020 13:40:42