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__