/////////////////////////////////////////////////////////////////////////////// // // ## ###### // ###### ### // ## ############### Shark 3D Engine (www.shark3d.com) // ########## # # # // ######## Copyright (c) 1996-2006 Spinor GmbH. // ######### # # # All rights reserved. // ## ########## // ## // /////////////////////////////////////////////////////////////////////////////// //@cpp #ifndef S3D_DRV_D3D9_VISIB_H #define S3D_DRV_D3D9_VISIB_H #include "drv_d3d9_query.h" /////////////////////////////////////////////////////////////////////////////// class s3d_CDrvD3d9Visib; class s3d_CDrvD3d9VisibMgr; //@ typedef s3d_CUtilPtr s3d_CDrvD3d9VisibMgrPtr; /////////////////////////////////////////////////////////////////////////////// //@ class s3d_CDrvD3d9Visib : public s3d_CDrvGfxVisib { public: s3d_CDrvD3d9Visib( s3d_CDrvD3d9VisibMgr *VisibMgr, s3d_CDrvD3d9QueryOcclusion &QueryOcclusion); bool IsAvail(); bool GetResult(bool Wait); private: s3d_CDrvD3d9QueryOcclusion m_QueryOcclusion; s3d_CDrvD3d9VisibMgrPtr m_VisibMgr; void RefCntGotDownToZero(); }; S3D_UTIL_RECOG_DECLAREINFO(s3d_CDrvD3d9Visib); //@ typedef s3d_CUtilPtr s3d_CDrvD3d9VisibPtr; //@ typedef s3d_CUtilPtrArray s3d_CDrvD3d9VisibArray; /////////////////////////////////////////////////////////////////////////////// class s3d_CDrvD3d9VisibMgr : public s3d_CUtilPtrBase { public: s3d_CDrvD3d9VisibMgr( s3d_CUtilMsgHandler *MsgHandler, s3d_CDrvD3d9Env &Env, s3d_CDrvD3d9Param *D3dParam, s3d_CDrvD3d9Device &D3dDev); void BeginVisib(); s3d_CDrvGfxVisibPtr EndVisib(); void Park(); void Unpark(); private: friend class s3d_CDrvD3d9Visib; s3d_CUtilMsgHandlerPtr m_MsgHandler; s3d_CDrvD3d9Env *m_Env; s3d_CDrvD3d9Device m_D3dDev; s3d_CDrvD3d9QueryOcclusion m_QueryOcclusion; s3d_CDrvD3d9VisibArray m_VisibArray; s3d_CDrvD3d9VisibArray m_VisibFreePool; void AddToPool( s3d_CDrvD3d9Visib *Visib); }; /////////////////////////////////////////////////////////////////////////////// #endif