Main Page Namespace List Class Hierarchy Alphabetical List Compound List File List Namespace Members Compound Members File Members Related Pages

# OgreRenderSystemCapabilities.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 © 2000-2003 The OGRE Team
    00008 Also see acknowledgements in Readme.html
    00009
    00010 This program is free software; you can redistribute it and/or modify it under
    00011 the terms of the GNU Lesser General Public License as published by the Free Software
    00012 Foundation; either version 2 of the License, or (at your option) any later
    00013 version.
    00014
    00015 This program is distributed in the hope that it will be useful, but WITHOUT
    00016 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    00017 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
    00018
    00019 You should have received a copy of the GNU Lesser General Public License along with
    00020 this program; if not, write to the Free Software Foundation, Inc., 59 Temple
    00021 Place - Suite 330, Boston, MA 02111-1307, USA, or go to
    00022 http://www.gnu.org/copyleft/lesser.txt.
    00023 -----------------------------------------------------------------------------
    00024 */
    00025 #ifndef __RenderSystemCapabilities__
    00026 #define __RenderSystemCapabilities__ 1
    00027
    00028 // Precompiler options
    00029 #include "OgrePrerequisites.h"
    00030 #include "OgreString.h"
    00031
    00032 namespace Ogre {
    00033
    00035     enum Capabilities
    00036     {
    00037         //RSC_MULTITEXTURE          = 0x00000001,
    00039         RSC_AUTOMIPMAP              = 0x00000002,
    00040         RSC_BLENDING                = 0x00000004,
    00042         RSC_ANISOTROPY              = 0x00000008,
    00044         RSC_DOT3                    = 0x00000010,
    00046         RSC_CUBEMAPPING             = 0x00000020,
    00048         RSC_HWSTENCIL               = 0x00000040,
    00050         RSC_VBO                     = 0x00000080,
    00052         RSC_VERTEX_PROGRAM          = 0x00000200,
    00054         RSC_FRAGMENT_PROGRAM        = 0x00000400,
    00056         RSC_TEXTURE_COMPRESSION     = 0x00000800,
    00058         RSC_TEXTURE_COMPRESSION_DXT = 0x00001000,
    00060         RSC_TEXTURE_COMPRESSION_VTC = 0x00002000,
    00062         RSC_SCISSOR_TEST            = 0x00004000,
    00064         RSC_TWO_SIDED_STENCIL       = 0x00008000,
    00066         RSC_STENCIL_WRAP            = 0x00010000,
    00068         RSC_HWOCCLUSION             = 0x00020000,
    00070         RSC_USER_CLIP_PLANES        = 0x00040000,
    00072         RSC_VERTEX_FORMAT_UBYTE4    = 0x00080000,
    00074         RSC_INFINITE_FAR_PLANE      = 0x00100000
    00075
    00076     };
    00077
    00083     class _OgreExport RenderSystemCapabilities
    00084     {
    00085         private:
    00087             ushort mNumWorldMatrices;
    00089             ushort mNumTextureUnits;
    00091             ushort mStencilBufferBitDepth;
    00093             ushort mNumVertexBlendMatrices;
    00095             int mCapabilities;
    00097             String mMaxVertexProgramVersion;
    00099             String mMaxFragmentProgramVersion;
    00101             ushort mVertexProgramConstantFloatCount;
    00103             ushort mVertexProgramConstantIntCount;
    00105             ushort mVertexProgramConstantBoolCount;
    00107             ushort mFragmentProgramConstantFloatCount;
    00109             ushort mFragmentProgramConstantIntCount;
    00111             ushort mFragmentProgramConstantBoolCount;
    00112
    00113         public:
    00114             RenderSystemCapabilities ();
    00115             ~RenderSystemCapabilities ();
    00116
    00117             void setNumWorldMatricies(ushort num)
    00118             {
    00119                 mNumWorldMatrices = num;
    00120             }
    00121
    00122             void setNumTextureUnits(ushort num)
    00123             {
    00124                 mNumTextureUnits = num;
    00125             }
    00126
    00127             void setStencilBufferBitDepth(ushort num)
    00128             {
    00129                 mStencilBufferBitDepth = num;
    00130             }
    00131
    00132             void setNumVertexBlendMatrices(ushort num)
    00133             {
    00134                 mNumVertexBlendMatrices = num;
    00135             }
    00136
    00137             ushort getNumWorldMatricies(void) const
    00138             {
    00139                 return mNumWorldMatrices;
    00140             }
    00141
    00152             ushort getNumTextureUnits(void) const
    00153             {
    00154                 return mNumTextureUnits;
    00155             }
    00156
    00163             ushort getStencilBufferBitDepth(void) const
    00164             {
    00165                 return mStencilBufferBitDepth;
    00166             }
    00167
    00170             ushort numVertexBlendMatrices(void) const
    00171             {
    00172                 return mNumVertexBlendMatrices;
    00173             }
    00174
    00177             void setCapability(const Capabilities c)
    00178             {
    00179                 mCapabilities |= c;
    00180             }
    00181
    00184             bool hasCapability(const Capabilities c) const
    00185             {
    00186                 if(mCapabilities & c)
    00187                 {
    00188                     return true;
    00189                 }
    00190                 else
    00191                 {
    00192                     return false;
    00193                 }
    00194             }
    00196             const String& getMaxVertexProgramVersion(void) const
    00197             {
    00198                 return mMaxVertexProgramVersion;
    00199             }
    00201             const String& getMaxFragmentProgramVersion(void) const
    00202             {
    00203                 return mMaxFragmentProgramVersion;
    00204             }
    00206             ushort getVertexProgramConstantFloatCount(void) const
    00207             {
    00208                 return mVertexProgramConstantFloatCount;
    00209             }
    00211             ushort getVertexProgramConstantIntCount(void) const
    00212             {
    00213                 return mVertexProgramConstantIntCount;
    00214             }
    00216             ushort getVertexProgramConstantBoolCount(void) const
    00217             {
    00218                 return mVertexProgramConstantBoolCount;
    00219             }
    00221             ushort getFragmentProgramConstantFloatCount(void) const
    00222             {
    00223                 return mFragmentProgramConstantFloatCount;
    00224             }
    00226             ushort getFragmentProgramConstantIntCount(void) const
    00227             {
    00228                 return mFragmentProgramConstantIntCount;
    00229             }
    00231             ushort getFragmentProgramConstantBoolCount(void) const
    00232             {
    00233                 return mFragmentProgramConstantBoolCount;
    00234             }
    00235
    00236
    00237
    00239             void setMaxVertexProgramVersion(const String& ver)
    00240             {
    00241                 mMaxVertexProgramVersion = ver;
    00242             }
    00244             void setMaxFragmentProgramVersion(const String& ver)
    00245             {
    00246                 mMaxFragmentProgramVersion = ver;
    00247             }
    00249             void setVertexProgramConstantFloatCount(ushort c)
    00250             {
    00251                 mVertexProgramConstantFloatCount = c;
    00252             }
    00254             void setVertexProgramConstantIntCount(ushort c)
    00255             {
    00256                 mVertexProgramConstantIntCount = c;
    00257             }
    00259             void setVertexProgramConstantBoolCount(ushort c)
    00260             {
    00261                 mVertexProgramConstantBoolCount = c;
    00262             }
    00264             void setFragmentProgramConstantFloatCount(ushort c)
    00265             {
    00266                 mFragmentProgramConstantFloatCount = c;
    00267             }
    00269             void setFragmentProgramConstantIntCount(ushort c)
    00270             {
    00271                 mFragmentProgramConstantIntCount = c;
    00272             }
    00274             void setFragmentProgramConstantBoolCount(ushort c)
    00275             {
    00276                 mFragmentProgramConstantBoolCount = c;
    00277             }
    00278
    00280             void log(Log* pLog);
    00281
    00282
    00283
    00284
    00285     };
    00286 };
    00287
    00288 #endif // __RenderSystemCapabilities__
    00289

Copyright © 2002-2003 by The OGRE Team
Last modified Sun Nov 28 19:48:42 2004