1 | ///////////////////////////////////////////////////////////////////////////////
|
---|
2 | //
|
---|
3 | // ## ######
|
---|
4 | // ###### ###
|
---|
5 | // ## ############### Shark 3D Engine (www.shark3d.com)
|
---|
6 | // ########## # # #
|
---|
7 | // ######## Copyright (c) 1996-2006 Spinor GmbH.
|
---|
8 | // ######### # # # All rights reserved.
|
---|
9 | // ## ##########
|
---|
10 | // ##
|
---|
11 | //
|
---|
12 | ///////////////////////////////////////////////////////////////////////////////
|
---|
13 |
|
---|
14 | //@cpp
|
---|
15 |
|
---|
16 | #include "drv_d3d9_mgr.h"
|
---|
17 | #include "drv_d3d9_eng.h"
|
---|
18 | #include "drv_d3d9_engnull.h"
|
---|
19 | #include "drv_d3d9_enum.h"
|
---|
20 | #include "comp/core/comp_env.h"
|
---|
21 | #include "comp/util/comp_util_givensuppl.h"
|
---|
22 | #include "util/snk/util_snk_extract.h"
|
---|
23 |
|
---|
24 | ///////////////////////////////////////////////////////////////////////////////
|
---|
25 | /*@{
|
---|
26 |
|
---|
27 | @declare{comp.class}{drv_d3d9.gfxmgr}{}
|
---|
28 |
|
---|
29 | Creates @ident{comp}{drv_d3d9.gfxmgr.gfxeng} objects.
|
---|
30 | @p
|
---|
31 |
|
---|
32 | @}*/
|
---|
33 | ///////////////////////////////////////////////////////////////////////////////
|
---|
34 |
|
---|
35 | S3D_UTIL_RTTI_TABLE_DEFINE_BEGIN(s3d_CDrvD3d9GfxMgr)
|
---|
36 | S3D_UTIL_RTTI_TABLE_DEFINE_BASE(s3d_CDrvGfxMgr)
|
---|
37 | S3D_UTIL_RTTI_TABLE_DEFINE_BASE(s3d_CCompSetup)
|
---|
38 | S3D_UTIL_RTTI_TABLE_DEFINE_END
|
---|
39 |
|
---|
40 | s3d_CDrvD3d9GfxMgr::s3d_CDrvD3d9GfxMgr(
|
---|
41 | s3d_CUtilMsgHandler *MsgHandler, s3d_CUtilStr_cr Info)
|
---|
42 | {
|
---|
43 | }
|
---|
44 |
|
---|
45 | void s3d_CDrvD3d9GfxMgr::SetupInit(
|
---|
46 | s3d_CUtilMsgHandler *MsgHandler, s3d_CUtilStr_cr Info,
|
---|
47 | s3d_CCompSuppl *FetchSuppl, s3d_CUtilSnkChunk *Param)
|
---|
48 | {
|
---|
49 | s3d_CUtilSnkExtract SnkExtract;
|
---|
50 | SnkExtract.Assign(MsgHandler, Param);
|
---|
51 |
|
---|
52 | /*@{ @declare{comp.param}{drv_d3d9.gfxmgr.env}{$ [str]}
|
---|
53 | @}*/
|
---|
54 | s3d_CUtilStr EnvIdent, EnvInfo;
|
---|
55 | SnkExtract.ExtractStr(EnvInfo, EnvIdent, "env", true);
|
---|
56 |
|
---|
57 | /*@{ @declare{comp.param}{drv_d3d9.gfxmgr.univprog_suppl}{$ [str]}
|
---|
58 | @}*/
|
---|
59 | s3d_CUtilStr UnivProgSupplIdent, UnivProgSupplInfo;
|
---|
60 | SnkExtract.ExtractStr(
|
---|
61 | UnivProgSupplInfo, UnivProgSupplIdent,
|
---|
62 | "univprog_suppl", true);
|
---|
63 |
|
---|
64 | /*@{ @declare{comp.param}{drv_d3d9.gfxmgr.univprog_given_array}
|
---|
65 | {$ [chunk]..[chunk]}
|
---|
66 | @}*/
|
---|
67 | s3d_CUtilSnkChunkArray UnivProgGivenChunkArray;
|
---|
68 | SnkExtract.ExtractChunkArray(
|
---|
69 | UnivProgGivenChunkArray, "univprog_given_array", true);
|
---|
70 |
|
---|
71 | /*@{ @declare{comp.param}{drv_d3d9.gfxmgr.default_outparam}{$ [chunk]}
|
---|
72 | @}*/
|
---|
73 | m_DefaultOutParam = SnkExtract.ExtractChunk("default_outparam", true);
|
---|
74 |
|
---|
75 | SnkExtract.CheckForUnknown();
|
---|
76 |
|
---|
77 | s3d_CCompEnvPtr Env = s3d_CompSupplObjT<s3d_CCompEnv>(
|
---|
78 | MsgHandler, EnvInfo, FetchSuppl,
|
---|
79 | EnvIdent, S3D_GENERAL_INTEROP_INTERF);
|
---|
80 | if(!Env)
|
---|
81 | return;
|
---|
82 |
|
---|
83 | m_UnivProgSuppl = s3d_CompSupplObjT<s3d_CCompSuppl>(
|
---|
84 | MsgHandler, UnivProgSupplInfo, FetchSuppl,
|
---|
85 | UnivProgSupplIdent, S3D_GENERAL_INTEROP_INTERF);
|
---|
86 |
|
---|
87 | m_UnivProgGivenSuppl = S3D_SYS_NEW s3d_CCompUtilGivenSuppl(
|
---|
88 | MsgHandler, Info, FetchSuppl, UnivProgGivenChunkArray);
|
---|
89 |
|
---|
90 | m_MsgHandler = MsgHandler;
|
---|
91 | m_Info = Info;
|
---|
92 | m_Bare = Env->m_Bare;
|
---|
93 | m_CompSuppl = Env->m_CompSuppl;
|
---|
94 | m_AtomMgr = Env->m_AtomMgr;
|
---|
95 | m_MemPool = Env->m_MemPool;
|
---|
96 | m_ResMgr = Env->m_ResMgr;
|
---|
97 | m_StorageMgr = Env->m_StorageMgr;
|
---|
98 | }
|
---|
99 |
|
---|
100 | void s3d_CDrvD3d9GfxMgr::SetupDone()
|
---|
101 | {
|
---|
102 | }
|
---|
103 |
|
---|
104 | bool s3d_CDrvD3d9GfxMgr::EnumFullscreenModes(
|
---|
105 | s3d_CUtilArray<s3d_CDrvGfxEnumEntry> &EnumArray,
|
---|
106 | s3d_CUtilStr_cr Info, s3d_CUtilSnkChunk *Param)
|
---|
107 | {
|
---|
108 |
|
---|
109 | s3d_CDrvD3d9ParamPtr D3dParam = S3D_SYS_NEW s3d_CDrvD3d9Param;
|
---|
110 | D3dParam->Init(m_MsgHandler, Param);
|
---|
111 |
|
---|
112 | s3d_CDrvD3d9Direct3d D3d;
|
---|
113 | D3d.EmptyRef() = Direct3DCreate9(D3D_SDK_VERSION);
|
---|
114 | if(!D3d)
|
---|
115 | {
|
---|
116 | s3d_CDrvD3d9Error e;
|
---|
117 | e.m_Code = "drv/imp/directx/d3d9/drv_d3d9_enum.dev_err";
|
---|
118 | e.m_StdTempl = "D3D: Error creating D3D.";
|
---|
119 | e.AddInfo(Info);
|
---|
120 | s3d_UtilMsgReportError(m_MsgHandler, e);
|
---|
121 | return false;
|
---|
122 | }
|
---|
123 |
|
---|
124 | s3d_CDrvD3d9Enum GfxEnum;
|
---|
125 | if(!GfxEnum.Enumerate(
|
---|
126 | m_MsgHandler, m_Info, m_MemPool, D3dParam,
|
---|
127 | D3d, true, false))
|
---|
128 | return false;
|
---|
129 |
|
---|
130 | GfxEnum.CollectEntries(EnumArray);
|
---|
131 | return true;
|
---|
132 | }
|
---|
133 |
|
---|
134 | s3d_CDrvGfxEngPtr s3d_CDrvD3d9GfxMgr::CreateEng()
|
---|
135 | {
|
---|
136 | #ifdef S3D_DRV_D3D9_USE_ENGNULL
|
---|
137 | return S3D_SYS_NEW s3d_CDrvD3d9GfxEngNull(
|
---|
138 | m_MsgHandler, m_Info, m_CompSuppl, m_AtomMgr, m_MemPool,
|
---|
139 | m_ResMgr, m_StorageMgr,
|
---|
140 | m_UnivProgSuppl, m_UnivProgGivenSuppl);
|
---|
141 |
|
---|
142 | #endif
|
---|
143 |
|
---|
144 | return S3D_SYS_NEW s3d_CDrvD3d9GfxEngCLOD(
|
---|
145 | m_MsgHandler, m_Info, m_Bare,
|
---|
146 | m_CompSuppl, m_AtomMgr, m_MemPool,
|
---|
147 | m_StorageMgr, m_ResMgr,
|
---|
148 | m_UnivProgSuppl, m_UnivProgGivenSuppl,
|
---|
149 | m_DefaultOutParam);
|
---|
150 | }
|
---|
151 |
|
---|
152 | s3d_CUtilSnkChunkPtr s3d_CDrvD3d9GfxMgr::GetDefaultOutParam()
|
---|
153 | {
|
---|
154 | return m_DefaultOutParam;
|
---|
155 | }
|
---|
156 |
|
---|
157 | ///////////////////////////////////////////////////////////////////////////////
|
---|