"L. Spiro Engine"

F:/My Projects/LSEngine/Modules/LSGraphicsLib/Src/OpenGLShaders/LSGOpenGlShader.h

00001 
00023 #ifndef __LSG_OPENGLSHADER_H__
00024 #define __LSG_OPENGLSHADER_H__
00025 
00026 #include "../LSGGraphicsLib.h"
00027 #include "../ShaderLanguage/LSGShaderBase.h"
00028 #include "LSGOpenGlCompiledShader.h"
00029 #include "LSGOpenGlCompiledShaderManager.h"
00030 #include "LSGOpenGlShaderProgramManager.h"
00031 #include "LSGOpenGlShaderTranslator.h"
00032 
00033 #if defined( LSG_OGL )
00034 
00035 namespace lsg {
00036 
00037         class COpenGlShaderManager;
00038 
00052         class COpenGlShader : public CShaderBase {
00053         public :
00054                 // == Various constructors.
00055                 LSE_CALLCTOR                                                    COpenGlShader();
00056                 virtual LSE_CALLCTOR                                    ~COpenGlShader();
00057 
00058 
00059                 // == Functions.
00063                 LSVOID LSE_CALL                                                 Reset();
00064 
00073                 virtual LSUINT64 LSE_CALL                               GetId() const;
00074 
00080                 const COpenGlShaderProgramManager::LSG_ATTRIBUTE_USAGE_LOCS * LSE_CALL
00081                                                                                                 GetAttributeLocs() const;
00082 
00090                 virtual LSBOOL LSE_CALL                                 Activate( LSVOID * _pvSysValue );
00091 
00095                 virtual LSVOID LSE_CALL                                 Deactivate();
00096 
00103                 virtual LSG_HANDLE LSE_CALL                             GetConstantByName( const LSCHAR * _pcName );
00104 
00112                 virtual LSBOOL LSE_CALL                                 SetFloat( LSG_HANDLE _hHandle, LSFLOAT _fValue );
00113 
00122                 virtual LSBOOL LSE_CALL                                 SetFloatArray( LSG_HANDLE _hHandle, const LSFLOAT * _pfValues, LSUINT32 _ui32Total );
00123 
00131                 virtual LSBOOL LSE_CALL                                 SetInt( LSG_HANDLE _hHandle, LSINT32 _iValue );
00132 
00141                 virtual LSBOOL LSE_CALL                                 SetIntArray( LSG_HANDLE _hHandle, const LSINT32 * _piValues, LSUINT32 _ui32Total );
00142 
00150                 virtual LSBOOL LSE_CALL                                 SetBool( LSG_HANDLE _hHandle, LSBOOL _bValue );
00151 
00160                 virtual LSBOOL LSE_CALL                                 SetBoolArray( LSG_HANDLE _hHandle, const LSBOOL * _pbValues, LSUINT32 _ui32Total );
00161 
00169                 virtual LSBOOL LSE_CALL                                 SetVector2( LSG_HANDLE _hHandle, const CVector2 &_vValue );
00170 
00179                 virtual LSBOOL LSE_CALL                                 SetVector2Array( LSG_HANDLE _hHandle, const CVector2 * _pvValues, LSUINT32 _ui32Total );
00180 
00188                 virtual LSBOOL LSE_CALL                                 SetVector3( LSG_HANDLE _hHandle, const CVector3 &_vValue );
00189 
00198                 virtual LSBOOL LSE_CALL                                 SetVector3Array( LSG_HANDLE _hHandle, const CVector3 * _pvValues, LSUINT32 _ui32Total );
00199 
00207                 virtual LSBOOL LSE_CALL                                 SetVector4( LSG_HANDLE _hHandle, const CVector4 &_vValue );
00208 
00217                 virtual LSBOOL LSE_CALL                                 SetVector4Array( LSG_HANDLE _hHandle, const CVector4 * _pvValues, LSUINT32 _ui32Total );
00218 
00226                 virtual LSBOOL LSE_CALL                                 SetMatrix2x2( LSG_HANDLE _hHandle, const CMatrix2x2 &_mValue );
00227 
00235                 virtual LSBOOL LSE_CALL                                 SetMatrix3x3( LSG_HANDLE _hHandle, const CMatrix3x3 &_mValue );
00236 
00244                 virtual LSBOOL LSE_CALL                                 SetMatrix4x4( LSG_HANDLE _hHandle, const CMatrix4x4 &_mValue );
00245 
00254                 LSBOOL LSE_CALL                                                 SetMatrix4x4Array( LSG_HANDLE _hHandle, const CMatrix4x4 * _pmValues, LSUINT32 _ui32Total );
00255 
00256 
00257         protected :
00258                 // == Members.
00262                 COpenGlCompiledShader *                                 m_pogcsShaders[CShaderLanguageParser::LSG_ST_TOTAL];
00263 
00267                 COpenGlShaderProgramManager::COpenGlShaderProgram *
00268                                                                                                 m_pospProgram;
00269 
00273                 COpenGlShaderManager *                                  m_pogsmShaderMan;
00274 
00275 
00276                 // == Functions.
00280                 virtual LSVOID LSE_CALL                                 CreateTranslator();
00281 
00285                 virtual LSVOID LSE_CALL                                 DestroyTranslator();
00286 
00294                 virtual LSG_SHADER_ERRORS LSE_CALL              PostCompile( CString &_sError );
00295 
00296         private :
00297                 typedef CShaderBase                                             Parent;
00298                 friend class                                                    COpenGlShaderManager;
00299         };
00300 
00301 }       // namespace lsg
00302 
00303 #endif  // #if defined( LSG_OGL )
00304 
00305 #endif  // __LSG_OPENGLSHADER_H__
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator