/////////////////////////////////////////////////////////////////////////////// // // ## ###### // ###### ### // ## ############### Shark 3D Engine (www.shark3d.com) // ########## # # # // ######## Copyright (c) 1996-2006 Spinor GmbH. // ######### # # # All rights reserved. // ## ########## // ## // /////////////////////////////////////////////////////////////////////////////// //@cpp #ifndef S3D_DRV_D3D9_PROGMGR_H #define S3D_DRV_D3D9_PROGMGR_H #include "drv_d3d9_types.h" #include "drv_d3d9_param.h" #include "drv_d3d9_paramblk.h" #include "drv_d3d9_tex.h" #include "drv_d3d9_prog.h" #include "comp/core/comp_resmgr.h" #include "comp/core/comp_suppl.h" #include "util/base/util_msg.h" #include "util/cont/util_idmgr.h" #include "util/cont/util_atom.h" /////////////////////////////////////////////////////////////////////////////// //@ class s3d_CDrvD3d9ProgMgr : public s3d_CUtilPtrBase { public: s3d_CDrvD3d9ProgMgr( s3d_CDrvD3d9ProgCtx *ProgCtx); s3d_CDrvGfxProgPtr CreateProg( s3d_CUtilNotifGather *NotifGather, s3d_CUtilSnkChunk *Desc); void InvalidateProg(); void SelectProg( const s3d_CSysChar *Info, s3d_CDrvD3d9Prog *Prog, const s3d_CSysChar *BufInfo, const s3d_CSysChar *BufDesc, const s3d_CDrvD3d9VertDecl &VertDecl, s3d_CDrvGfxParam_cr GfxParam, const s3d_CDrvD3d9ParamBlk &ParamBlk, s3d_CDrvD3d9ParamBlkState &ParamBlkState); void TrackTransfBone( s3d_CSysIntps BoneIdxCnt, const s3d_CSysInt32u *BoneIdxData, s3d_CSysIntps MatBoneCnt, const D3DXMATRIXA16 *MatBoneArray); bool CheckVertBufIsCompatible( const s3d_CDrvGfxProg *Prog, const s3d_CSysChar *BufInfo, const s3d_CSysChar *BufDesc, const s3d_CDrvD3d9VertDecl &VertDecl); private: s3d_CDrvD3d9ProgCtxPtr m_ProgCtx; s3d_CDrvD3d9ProgPtr m_CurProg; bool m_ValidateProgBuf; void ReportVertProgIncompatible( s3d_CUtilStr_cr CodeInfo, s3d_CUtilStr_cr CodeName, const s3d_CDrvD3d9ProgDecl &VertProgDecl, const s3d_CSysChar *BufInfo, const s3d_CSysChar *BufDesc, s3d_CSysIntps ElemCnt, const D3DVERTEXELEMENT9 *ElemArray); }; //@ typedef s3d_CUtilPtr s3d_CDrvD3d9ProgMgrPtr; /////////////////////////////////////////////////////////////////////////////// #endif