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__