/////////////////////////////////////////////////////////////////////////////// // // ## ###### // ###### ### // ## ############### Shark 3D Engine (www.shark3d.com) // ########## # # # // ######## Copyright (c) 1996-2006 Spinor GmbH. // ######### # # # All rights reserved. // ## ########## // ## // /////////////////////////////////////////////////////////////////////////////// //@cpp #include "drv_d3d9_mgr.h" #include "drv_d3d9_eng.h" #include "drv_d3d9_engnull.h" #include "drv_d3d9_enum.h" #include "comp/core/comp_env.h" #include "comp/util/comp_util_givensuppl.h" #include "util/snk/util_snk_extract.h" /////////////////////////////////////////////////////////////////////////////// /*@{ @declare{comp.class}{drv_d3d9.gfxmgr}{} Creates @ident{comp}{drv_d3d9.gfxmgr.gfxeng} objects. @p @}*/ /////////////////////////////////////////////////////////////////////////////// S3D_UTIL_RTTI_TABLE_DEFINE_BEGIN(s3d_CDrvD3d9GfxMgr) S3D_UTIL_RTTI_TABLE_DEFINE_BASE(s3d_CDrvGfxMgr) S3D_UTIL_RTTI_TABLE_DEFINE_BASE(s3d_CCompSetup) S3D_UTIL_RTTI_TABLE_DEFINE_END s3d_CDrvD3d9GfxMgr::s3d_CDrvD3d9GfxMgr( s3d_CUtilMsgHandler *MsgHandler, s3d_CUtilStr_cr Info) { } void s3d_CDrvD3d9GfxMgr::SetupInit( s3d_CUtilMsgHandler *MsgHandler, s3d_CUtilStr_cr Info, s3d_CCompSuppl *FetchSuppl, s3d_CUtilSnkChunk *Param) { s3d_CUtilSnkExtract SnkExtract; SnkExtract.Assign(MsgHandler, Param); /*@{ @declare{comp.param}{drv_d3d9.gfxmgr.env}{$ [str]} @}*/ s3d_CUtilStr EnvIdent, EnvInfo; SnkExtract.ExtractStr(EnvInfo, EnvIdent, "env", true); /*@{ @declare{comp.param}{drv_d3d9.gfxmgr.univprog_suppl}{$ [str]} @}*/ s3d_CUtilStr UnivProgSupplIdent, UnivProgSupplInfo; SnkExtract.ExtractStr( UnivProgSupplInfo, UnivProgSupplIdent, "univprog_suppl", true); /*@{ @declare{comp.param}{drv_d3d9.gfxmgr.univprog_given_array} {$ [chunk]..[chunk]} @}*/ s3d_CUtilSnkChunkArray UnivProgGivenChunkArray; SnkExtract.ExtractChunkArray( UnivProgGivenChunkArray, "univprog_given_array", true); /*@{ @declare{comp.param}{drv_d3d9.gfxmgr.default_outparam}{$ [chunk]} @}*/ m_DefaultOutParam = SnkExtract.ExtractChunk("default_outparam", true); SnkExtract.CheckForUnknown(); s3d_CCompEnvPtr Env = s3d_CompSupplObjT( MsgHandler, EnvInfo, FetchSuppl, EnvIdent, S3D_GENERAL_INTEROP_INTERF); if(!Env) return; m_UnivProgSuppl = s3d_CompSupplObjT( MsgHandler, UnivProgSupplInfo, FetchSuppl, UnivProgSupplIdent, S3D_GENERAL_INTEROP_INTERF); m_UnivProgGivenSuppl = S3D_SYS_NEW s3d_CCompUtilGivenSuppl( MsgHandler, Info, FetchSuppl, UnivProgGivenChunkArray); m_MsgHandler = MsgHandler; m_Info = Info; m_Bare = Env->m_Bare; m_CompSuppl = Env->m_CompSuppl; m_AtomMgr = Env->m_AtomMgr; m_MemPool = Env->m_MemPool; m_ResMgr = Env->m_ResMgr; m_StorageMgr = Env->m_StorageMgr; } void s3d_CDrvD3d9GfxMgr::SetupDone() { } bool s3d_CDrvD3d9GfxMgr::EnumFullscreenModes( s3d_CUtilArray &EnumArray, s3d_CUtilStr_cr Info, s3d_CUtilSnkChunk *Param) { s3d_CDrvD3d9ParamPtr D3dParam = S3D_SYS_NEW s3d_CDrvD3d9Param; D3dParam->Init(m_MsgHandler, Param); s3d_CDrvD3d9Direct3d D3d; D3d.EmptyRef() = Direct3DCreate9(D3D_SDK_VERSION); if(!D3d) { s3d_CDrvD3d9Error e; e.m_Code = "drv/imp/directx/d3d9/drv_d3d9_enum.dev_err"; e.m_StdTempl = "D3D: Error creating D3D."; e.AddInfo(Info); s3d_UtilMsgReportError(m_MsgHandler, e); return false; } s3d_CDrvD3d9Enum GfxEnum; if(!GfxEnum.Enumerate( m_MsgHandler, m_Info, m_MemPool, D3dParam, D3d, true, false)) return false; GfxEnum.CollectEntries(EnumArray); return true; } s3d_CDrvGfxEngPtr s3d_CDrvD3d9GfxMgr::CreateEng() { #ifdef S3D_DRV_D3D9_USE_ENGNULL return S3D_SYS_NEW s3d_CDrvD3d9GfxEngNull( m_MsgHandler, m_Info, m_CompSuppl, m_AtomMgr, m_MemPool, m_ResMgr, m_StorageMgr, m_UnivProgSuppl, m_UnivProgGivenSuppl); #endif return S3D_SYS_NEW s3d_CDrvD3d9GfxEngCLOD( m_MsgHandler, m_Info, m_Bare, m_CompSuppl, m_AtomMgr, m_MemPool, m_StorageMgr, m_ResMgr, m_UnivProgSuppl, m_UnivProgGivenSuppl, m_DefaultOutParam); } s3d_CUtilSnkChunkPtr s3d_CDrvD3d9GfxMgr::GetDefaultOutParam() { return m_DefaultOutParam; } ///////////////////////////////////////////////////////////////////////////////