/////////////////////////////////////////////////////////////////////////////// // // ## ###### // ###### ### // ## ############### Shark 3D Engine (www.shark3d.com) // ########## # # # // ######## Copyright (c) 1996-2006 Spinor GmbH. // ######### # # # All rights reserved. // ## ########## // ## // /////////////////////////////////////////////////////////////////////////////// //@cpp #ifndef S3D_DRV_D3D9_ENG_NULL_H #define S3D_DRV_D3D9_ENG_NULL_H #include "drv_d3d9_settings.h" #include "drv_d3d9_types.h" #include "drv/interf/drv_gfx.h" #include "drv/interf/drv_ctx.h" #include "drv/interf/win32/drv_win32_ctx.h" #include "comp/core/comp_module.h" #include "comp/core/comp_setup.h" /////////////////////////////////////////////////////////////////////////////// #ifdef S3D_DRV_D3D9_USE_ENGNULL class s3d_CDrvD3d9GfxEngNull : public s3d_CDrvGfxEng { public: s3d_CDrvD3d9GfxEngNull( s3d_CUtilMsgHandler *MsgHandler, s3d_CUtilStr_cr Info, s3d_CCompSuppl *CompSuppl, s3d_CUtilAtomMgr *AtomMgr, s3d_CUtilMemPool *MemPool, s3d_CCompResMgr *ResMgr, s3d_CUtilStorageMgr *StorageMgr, s3d_CDrvCtx *Ctx, s3d_CCompSuppl *UnivProgSuppl, s3d_CCompSuppl *UnivProgGivenSuppl, s3d_CUtilSnkChunk *Param, s3d_CUtilStr_cr Device, int Prop, int Left, int Top, int Width, int Height, int Depth, int Frequency); ~s3d_CDrvD3d9GfxEngNull(); s3d_CUtilStr GetDesc() const; void UserFunc(s3d_CUtilCoStr Func); bool HasCap( s3d_CSysIntps CapLen, const s3d_CSysChar *CapStart) const; s3d_CDrvGfxStat *GetStat(); int GetSampCnt() const; int GetStencilBits() const; void SnapTexSize( int &Width, int &Height, int &Depth, int TexProp, int SnapProp); s3d_CDrvGfxTexPtr CreateTexDirect( s3d_CUtilStr_cr Info, int TexProp, int Width, int Height, int Depth); s3d_CDrvGfxTexPtr CreateTexStream( s3d_CUtilStr_cr Info, int TexProp, s3d_CUtilStream *Stream); s3d_CDrvGfxTexPtr CreateTexVideo( s3d_CUtilStr_cr Info, int TexProp, s3d_CDrvVideoPlayer *VideoPlayer); s3d_CDrvGfxTexPtr CreateTexIdent( s3d_CUtilStr_cr Info, int TexProp, s3d_CUtilStr_cr Ident); s3d_CDrvGfxTexPtr CreateTexUser( s3d_CUtilStr_cr Info, int TexProp, s3d_CCompObj *UserObj); void SetSampTex( int Samp, s3d_CDrvGfxTex *Tex); void SetSampTexElseNone(int SampStart); void SetSampMode( int Samp, int SampMode); s3d_CDrvGfxProgPtr CreateProg( s3d_CUtilNotifGather *NotifGather, s3d_CUtilSnkChunk *Desc); void GetSize(int &Width, int &Height) const; int GetColorBits() const; void SetGamma( s3d_CUtilVec3f_cr Gamma); void Present(); void GetCurTargetSize(int &Width, int &Height) const; void EndRender(); void BeginRenderMain( int DestProp, s3d_CDrvGfxClearParam_cr ClearParam, s3d_CDrvGfxOut *GfxOut); void BeginRenderTex( int DestProp, s3d_CDrvGfxClearParam_cr ClearParam, int Width, int Height, s3d_CSysIntps DestCnt, const s3d_CDrvGfxDest *DestArray); void CopyIntoTex( int Width, int Height, int SrcX, int SrcY, s3d_CSysIntps DestCnt, const s3d_CDrvGfxDest *DestArray); void StoreScreenshot(); void SetViewRect( s3d_CUtilTranslScale2f_cr ViewRect); void SetViewDepthRange(float NegZ, float PosZ); void SetCullMode(int Mode); void SetDepthTest(int Mode); void SetDepthWrite(bool Enabled); int GetStencilBits() const; void SetStencilMode( int TestMask, int TestRef, int TestModeFront, int TestModeBack, int WriteMask, int OpFailFront, int OpDepthFailFront, int OpDepthPassFront, int OpFailBack, int OpDepthFailBack, int OpDepthPassBack); void SetAlphaTest( int Mode, float Ref); void SetBlendMode( int ColSrcFac, int ColDestFac, int ColOp, int AlphaSrcFac, int AlphaDestFac, int AlphaOp); void SetPaintMode(int Mode); void SetPaintExt(float Ext); void BeginVisib(); s3d_CDrvGfxVisibPtr EndVisib(); void SetFogNone(); void SetFogExp(float Density, s3d_CUtilVec3f_cr Color); bool IsStereo() const; void SetStereoEyeOffset(s3d_CUtilVec3f_cr EyeOffset); void SetTransf( int Chan, int Slot, s3d_CUtilMat4x4f_cr Mat); void SetTransfIdentity( int Chan, int Slot); void SetClipPlane( s3d_CUtilVec4f_cr Plane); void SetDepthBias( float BiasOverlay, float BiasOffs); void DisableLighting(); void SetLightArray( s3d_CSysIntps LightCnt, s3d_CDrvGfxLight **LightArray); void SetMtl( s3d_CUtilVec3f_cr Ambient, s3d_CUtilVec3f_cr Diffuse, s3d_CUtilVec3f_cr Specular, s3d_CUtilVec3f_cr Emissive, float SpecExp, float Alpha); void SetColorAlpha( s3d_CUtilVec4f_cr ColorAlpha); void GetPacketLimits( s3d_CSysIntps &MaxVertCnt, s3d_CSysIntps &MaxPrimCnt, int Prim); s3d_CDrvGfxBatchPtr CreateBatch( const s3d_CDrvGfxCharge *Charge); void ExecuteCharge( const s3d_CDrvGfxCharge *Charge, s3d_CDrvGfxBatch *Batch, s3d_CDrvGfxParam_cr GfxParam); s3d_CDrvWin32CtxInterf *m_CtxWin32; s3d_CDrvD3d9Direct3d m_D3d; s3d_CDrvD3d9Device m_D3dDev; int m_Width; int m_Height; DWORD m_DevFlags; D3DPRESENT_PARAMETERS m_PresentParam; }; //@ typedef s3d_CUtilPtr s3d_CDrvD3d9GfxEngNullPtr; /////////////////////////////////////////////////////////////////////////////// //@ class s3d_CDrvD3d9GfxEngNullMgr: public s3d_CDrvGfxMgr { public: S3D_UTIL_RTTI_TABLE_DECLARE ~s3d_CDrvD3d9GfxEngNullMgr(); bool EnumFullscreenModes( s3d_CUtilArray &EnumArray, s3d_CUtilStr_cr Info, s3d_CUtilSnkChunk *Param); s3d_CDrvGfxEngPtr CreateEng(); s3d_CUtilSnkChunkPtr GetDefaultOutParam(); }; //@ typedef s3d_CUtilPtr s3d_CDrvD3d9GfxEngNullMgrPtr; #endif // S3D_DRV_D3D9_USE_ENGNULL /////////////////////////////////////////////////////////////////////////////// #endif