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 __GLStateCacheManager_H__ 00030 #define __GLStateCacheManager_H__ 00031 00032 #include "OgreGLPrerequisites.h" 00033 #include "OgreStdHeaders.h" 00034 #include "OgreIteratorWrappers.h" 00035 00036 typedef Ogre::GeneralAllocatedObject StateCacheAlloc; 00037 00038 namespace Ogre 00039 { 00040 class GLStateCacheManagerImp; 00041 00055 class _OgreGLExport GLStateCacheManager : public StateCacheAlloc 00056 { 00057 private: 00058 GLStateCacheManagerImp* mImp; 00059 typedef map<intptr_t, GLStateCacheManagerImp*>::type CachesMap; 00060 typedef MapIterator<CachesMap> CachesMapIterator; 00061 00062 CachesMap mCaches; 00063 00064 public: 00065 GLStateCacheManager(void); 00066 ~GLStateCacheManager(void); 00067 00072 void unregisterContext (intptr_t id); 00073 00077 void switchContext (intptr_t id); 00078 00081 void clearCache(); 00082 00088 void bindGLBuffer(GLenum target, GLuint buffer, bool force = false); 00089 00095 void deleteGLBuffer(GLenum target, GLuint buffer, bool force = false); 00096 00101 void bindGLTexture(GLenum target, GLuint texture); 00102 00106 void invalidateStateForTexture(GLuint texture); 00107 00113 void setTexParameteri(GLenum target, GLenum pname, GLint param); 00114 00119 bool activateGLTextureUnit(size_t unit); 00120 00124 GLenum getBlendEquation(void) const; 00125 00129 void setBlendEquation(GLenum eq); 00130 00132 void setBlendEquation(GLenum eqRGB, GLenum eqA); 00133 00138 void setBlendFunc(GLenum source, GLenum dest); 00139 00140 void setShadeModel(GLenum model); 00141 00142 void setLightAmbient(GLfloat r, GLfloat g, GLfloat b); 00143 00147 GLboolean getDepthMask(void) const; 00148 00152 void setDepthMask(GLboolean mask); 00153 00157 GLenum getDepthFunc(void) const; 00158 00162 void setDepthFunc(GLenum func); 00163 00167 GLclampf getClearDepth(void) const; 00168 00172 void setClearDepth(GLclampf depth); 00173 00180 void setClearColour(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); 00181 00185 vector<GLboolean>::type & getColourMask(void) const; 00186 00193 void setColourMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); 00194 00198 GLuint getStencilMask(void) const; 00199 00203 void setStencilMask(GLuint mask); 00204 00208 void setEnabled(GLenum flag); 00209 00213 void setDisabled(GLenum flag); 00214 00218 unsigned int getDiscardBuffers(void) const; 00219 00223 void setDiscardBuffers(unsigned int flags); 00224 00228 GLenum getPolygonMode(void) const; 00229 00233 void setPolygonMode(GLenum mode); 00234 00238 GLenum getCullFace(void) const; 00239 00243 void setCullFace(GLenum face); 00244 00246 void enableTextureCoordGen(GLenum type); 00248 void disableTextureCoordGen(GLenum type); 00249 00250 // Set material lighting parameters 00251 void setMaterialAmbient(GLfloat r, GLfloat g, GLfloat b, GLfloat a); 00252 void setMaterialDiffuse(GLfloat r, GLfloat g, GLfloat b, GLfloat a); 00253 void setMaterialEmissive(GLfloat r, GLfloat g, GLfloat b, GLfloat a); 00254 void setMaterialSpecular(GLfloat r, GLfloat g, GLfloat b, GLfloat a); 00255 void setMaterialShininess(GLfloat shininess); 00256 void setPointSize(GLfloat size); 00257 void setPointParameters(GLfloat* attenuation, float minSize, float maxSize); 00258 00259 void setViewport(GLint x, GLint y, GLsizei width, GLsizei height); 00260 void getViewport(int* array); 00261 }; 00262 } 00263 00264 #endif
Copyright © 2012 Torus Knot Software Ltd

This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Last modified Mon Jul 27 2020 13:40:43