"L. Spiro Engine"

F:/My Projects/LSEngine/Modules/LSGraphicsLib/Src/DirectXShaders/LSGDirectX9Shader.h

00001 
00021 #ifndef __LSG_DIRECTX9SHADER_H__
00022 #define __LSG_DIRECTX9SHADER_H__
00023 
00024 #include "../LSGGraphicsLib.h"
00025 #include "../ShaderLanguage/LSGShaderBase.h"
00026 #include "LSGDirectX9PixelShader.h"
00027 #include "LSGDirectX9ShaderTranslator.h"
00028 #include "LSGDirectX9VertexShader.h"
00029 
00030 #if defined( LSG_DX9 )
00031 
00032 namespace lsg {
00033 
00034         class CDirectX9ShaderManager;
00035 
00047         class CDirectX9Shader : public CShaderBase {
00048         public :
00049                 // == Various constructors.
00050                 LSE_CALLCTOR                                                                            CDirectX9Shader();
00051                 virtual LSE_CALLCTOR                                                            ~CDirectX9Shader();
00052 
00053 
00054                 // == Functions.
00058                 LSVOID LSE_CALL                                                                         Reset();
00059 
00067                 virtual LSUINT64 LSE_CALL                                                       GetId() const;
00068 
00076                 virtual LSBOOL LSE_CALL                                                         Activate( LSVOID * _pvSysValue );
00077 
00081                 virtual LSVOID LSE_CALL                                                         Deactivate();
00082 
00089                 virtual LSG_HANDLE LSE_CALL                                                     GetConstantByName( const LSCHAR * _pcName );
00090 
00098                 virtual LSBOOL LSE_CALL                                                         SetFloat( CShaderBase::LSG_HANDLE _hHandle, LSFLOAT _fValue );
00099 
00108                 virtual LSBOOL LSE_CALL                                                         SetFloatArray( LSG_HANDLE _hHandle, const LSFLOAT * _pfValues, LSUINT32 _ui32Total );
00109 
00117                 virtual LSBOOL LSE_CALL                                                         SetInt( LSG_HANDLE _hHandle, LSINT32 _iValue );
00118 
00127                 virtual LSBOOL LSE_CALL                                                         SetIntArray( LSG_HANDLE _hHandle, const LSINT32 * _piValues, LSUINT32 _ui32Total );
00128 
00136                 virtual LSBOOL LSE_CALL                                                         SetBool( LSG_HANDLE _hHandle, LSBOOL _bValue );
00137 
00146                 virtual LSBOOL LSE_CALL                                                         SetBoolArray( LSG_HANDLE _hHandle, const LSBOOL * _pbValues, LSUINT32 _ui32Total );
00147 
00155                 virtual LSBOOL LSE_CALL                                                         SetVector2( LSG_HANDLE _hHandle, const CVector2 &_vValue );
00156 
00165                 virtual LSBOOL LSE_CALL                                                         SetVector2Array( LSG_HANDLE _hHandle, const CVector2 * _pvValues, LSUINT32 _ui32Total );
00166 
00174                 virtual LSBOOL LSE_CALL                                                         SetVector3( LSG_HANDLE _hHandle, const CVector3 &_vValue );
00175 
00184                 virtual LSBOOL LSE_CALL                                                         SetVector3Array( LSG_HANDLE _hHandle, const CVector3 * _pvValues, LSUINT32 _ui32Total );
00185 
00193                 virtual LSBOOL LSE_CALL                                                         SetVector4( LSG_HANDLE _hHandle, const CVector4 &_vValue );
00194 
00203                 virtual LSBOOL LSE_CALL                                                         SetVector4Array( LSG_HANDLE _hHandle, const CVector4 * _pvValues, LSUINT32 _ui32Total );
00204 
00212                 virtual LSBOOL LSE_CALL                                                         SetMatrix2x2( LSG_HANDLE _hHandle, const CMatrix2x2 &_mValue );
00213 
00221                 virtual LSBOOL LSE_CALL                                                         SetMatrix3x3( LSG_HANDLE _hHandle, const CMatrix3x3 &_mValue );
00222 
00230                 virtual LSBOOL LSE_CALL                                                         SetMatrix4x4( LSG_HANDLE _hHandle, const CMatrix4x4 &_mValue );
00231 
00240                 virtual LSBOOL LSE_CALL                                                         SetMatrix4x4Array( LSG_HANDLE _hHandle, const CMatrix4x4 * _pmValues, LSUINT32 _ui32Total );
00241 
00242 
00243         protected :
00244                 // == Types.
00248                 typedef struct LSG_DX9_SHADER_HANDLE {
00252                         LSG_HANDLE                                                                              hVertexHandle;
00253 
00257                         LSG_HANDLE                                                                              hPixelHandle;
00258 
00262                         LSUINT32                                                                                ui32Name;
00263 
00268                         CShaderLanguageParser::LSG_SHADER_TYPES                 stType;
00269                 } * LPLSG_DX9_SHADER_HANDLE, * const LPCLSG_DX9_SHADER_HANDLE;
00270 
00271 
00272                 // == Members.
00276                 CDirectX9VertexShader *                                                         m_pdx9vsVertexShader;
00277 
00281                 CDirectX9PixelShader *                                                          m_pdx9psPixelShader;
00282 
00286                 CVectorPoD<LSG_DX9_SHADER_HANDLE>                                       m_vHandles;
00287 
00291                 CDirectX9ShaderManager *                                                        m_pdx9smShaderManager;
00292 
00293 
00294                 // == Functions.
00298                 virtual LSVOID LSE_CALL                                                         CreateTranslator();
00299 
00303                 virtual LSVOID LSE_CALL                                                         DestroyTranslator();
00304 
00311                 virtual LSG_SHADER_ERRORS LSE_CALL                                      PostCompile( CString &_sError );
00312 
00313 
00314         private :
00315                 typedef CShaderBase                                                                     Parent;
00316         };
00317 
00318 }       // namespace lsg
00319 
00320 #endif  // #if defined( LSG_DX9 )
00321 
00322 #endif  // __LSG_DIRECTX9SHADER_H__
00323 
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator