"L. Spiro Engine"
|
00001 00016 #ifndef __LSG_SHADERSCOPESTACK_H__ 00017 #define __LSG_SHADERSCOPESTACK_H__ 00018 00019 #include "../LSGGraphicsLib.h" 00020 #include "LSGShaderScope.h" 00021 #include "Vector/LSTLVector.h" 00022 00023 namespace lsg { 00024 00031 class CShaderScopeStack { 00032 public : 00033 // == Various constructors. 00034 LSE_CALLCTOR CShaderScopeStack(); 00035 LSE_CALLCTOR ~CShaderScopeStack(); 00036 00037 00038 // == Types. 00042 typedef struct LSG_TYPE_INDEX_AND_INDEX { 00046 LSUINT32 ui32StackIndex; 00047 00051 CShaderScope::LSG_TYPE_AND_INDEX taiScopeIndex; 00052 } * LPLSG_TYPE_INDEX_AND_INDEX, * const LPCLSG_TYPE_INDEX_AND_INDEX; 00053 00054 00055 // == Functions. 00061 LSBOOL LSE_CALL Push(); 00062 00066 LSVOID LSE_CALL Pop(); 00067 00071 LSVOID LSE_CALL Reset(); 00072 00082 CShaderScope * LSE_CALL GetCurrentScope(); 00083 00093 const CShaderScope * LSE_CALL GetCurrentScope() const; 00094 00101 CShaderScope * LSE_CALL GetScope( LSUINT32 _ui32Index ); 00102 00109 const CShaderScope * LSE_CALL GetScope( LSUINT32 _ui32Index ) const; 00110 00116 LSUINT32 LSE_CALL TotalScopes() const; 00117 00125 LSBOOL LSE_CALL IdentifierExistsAs( CShaderScope::LSG_TYPE _tType, const CString &_sName ) const; 00126 00138 LSBOOL LSE_CALL GetIdentifiersAs( CShaderScope::LSG_TYPE _tType, const CString &_sName, CVectorPoD<LSG_TYPE_INDEX_AND_INDEX> &_vRet ) const; 00139 00147 LSBOOL LSE_CALL GetNameAssociation( const CString &_sName, const LSCHAR * &_pcNew ) const; 00148 00149 00150 protected : 00151 // == Members. 00155 CVector<CShaderScope, LSUINT32, 512UL> m_vStack; 00156 }; 00157 00158 } // namespace lsg 00159 00160 #endif // __LSG_SHADERSCOPESTACK_H__