"L. Spiro Engine"
|
00001 00023 #ifndef __LSG_OPENGLESSHADER_H__ 00024 #define __LSG_OPENGLESSHADER_H__ 00025 00026 #include "../LSGGraphicsLib.h" 00027 #include "../ShaderLanguage/LSGShaderBase.h" 00028 #include "LSGOpenGlEsCompiledShader.h" 00029 #include "LSGOpenGlEsCompiledShaderManager.h" 00030 #include "LSGOpenGlEsShaderProgramManager.h" 00031 #include "LSGOpenGlEsShaderTranslator.h" 00032 00033 #if defined( LSG_OGLES ) 00034 00035 namespace lsg { 00036 00037 class COpenGlEsShaderManager; 00038 00052 class COpenGlEsShader : public CShaderBase { 00053 public : 00054 // == Various constructors. 00055 LSE_CALLCTOR COpenGlEsShader(); 00056 virtual LSE_CALLCTOR ~COpenGlEsShader(); 00057 00058 00059 // == Functions. 00063 LSVOID LSE_CALL Reset(); 00064 00073 virtual LSUINT64 LSE_CALL GetId() const; 00074 00080 const COpenGlEsShaderProgramManager::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 COpenGlEsCompiledShader * m_pogcsShaders[CShaderLanguageParser::LSG_ST_TOTAL]; 00263 00267 COpenGlEsShaderProgramManager::COpenGlEsShaderProgram * 00268 m_pospProgram; 00269 00273 COpenGlEsShaderManager * 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 COpenGlEsShaderManager; 00299 }; 00300 00301 } // namespace lsg 00302 00303 #endif // #if defined( LSG_OGLES ) 00304 00305 #endif // __LSG_OPENGLESSHADER_H__