xsi_hardwareshadercontext.h Source File
 
 
 
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__