xsi_hardwareshadercontext.h
Go to the documentation of this file.
00001 //*****************************************************************************
00011 //*****************************************************************************
00012 
00013 #if (_MSC_VER > 1000) || defined(SGI_COMPILER)
00014 #pragma once
00015 #endif
00016 
00017 #ifndef __XSIHARDWARESHADERCONTEXT_H__
00018 #define __XSIHARDWARESHADERCONTEXT_H__
00019 
00020 #include <xsi_base.h>
00021 #include <xsi_value.h>
00022 #include <xsi_context.h>
00023 #include <xsi_time.h>
00024 #include <xsi_material.h>
00025 #include <xsi_x3dobject.h>
00026 #include <xsi_hardwaresurface.h>
00027 #include <xsi_hardwareattribute.h>
00028 
00029 namespace XSI {
00030 
00031 class Shader;
00032 class Camera;
00033 
00034 //*****************************************************************************
00042 //*****************************************************************************
00043 
00044 class SICPPSDKDECL HardwareShaderContext : public Context
00045 {
00046 public:
00047 
00049     HardwareShaderContext();
00050 
00052     ~HardwareShaderContext();
00053 
00057     HardwareShaderContext(const CRef& in_ref);
00058 
00062     HardwareShaderContext(const HardwareShaderContext& in_obj);
00063 
00068     bool IsA( siClassID in_ClassID) const;
00069 
00073     siClassID GetClassID() const;
00074 
00079     HardwareShaderContext& operator=(const HardwareShaderContext& in_obj);
00080 
00086     HardwareShaderContext& operator=(const CRef& in_ref);
00087 
00091     Shader GetShader( );
00092 
00098     Shader GetShaderForAnimation( );
00099 
00104     Camera GetCamera( );
00105 
00109     Material GetMaterial( );
00110 
00114     X3DObject GetX3DObject( );
00115 
00119     CRefArray GetLights();
00120 
00124     ULONG GetShaderUniqueID ();
00125 
00130     CTime GetTime() const;
00131 
00135     void* GetTriangleIndices();
00136 
00140     UINT GetIndexWidth();
00141 
00146     ULONG GetNbIndices();
00147 
00150     ULONG GetBaseOffset();
00151 
00155     ULONG GetNbVertices();
00156 
00159     CHardwareAttributeArray GetHardwareAttributeArray();
00160 
00164     bool IsGeometryDirty() const;
00165 
00169     MATH::CTransformation GetTransform() const;
00170 
00174     void DrawPrimitive( siGraphicDriver in_eDriver ) const;
00175 
00179     void DrawScreenAlignedQuad( siGraphicDriver in_eDriver ) const;
00180 
00185     HardwareSurface CreateHardwareSurface( HardwareSurface::Options& in_options );
00186 
00191     void SetRenderTarget( UINT in_nDrawBufferIndex, HardwareSurface& in_surface );
00192 
00195     void SetRenderDepthStencilTarget( HardwareSurface& in_surface );
00196 
00200     CRef GetGraphicDriver() const;
00201 
00213     CRefArray GetShadowSurfaces( XSI::CRefArray& out_lights ) const;
00214 
00221     CParameterRefArray GetDirtyParameters() const;
00222 
00223     private:
00224     HardwareShaderContext * operator&() const;
00225     HardwareShaderContext * operator&();
00226 };
00227 
00228 };
00229 #endif // __XSIRENDERERCONTEXT_H__