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 | #include "drv_d3d9_engnull.h"
|
---|
15 |
|
---|
16 | #ifdef S3D_DRV_D3D9_USE_ENGNULL
|
---|
17 |
|
---|
18 | ///////////////////////////////////////////////////////////////////////////////
|
---|
19 |
|
---|
20 | s3d_CDrvD3d9GfxEngNull::s3d_CDrvD3d9GfxEngNull(
|
---|
21 | s3d_CUtilMsgHandler *MsgHandler, s3d_CUtilStr_cr Info,
|
---|
22 | s3d_CCompSuppl *CompSuppl, s3d_CUtilAtomMgr *AtomMgr,
|
---|
23 | s3d_CUtilMemPool *MemPool, s3d_CCompResMgr *ResMgr,
|
---|
24 | s3d_CUtilStorageMgr *StorageMgr, s3d_CDrvCtx *Ctx,
|
---|
25 | s3d_CCompSuppl *UnivProgSuppl,
|
---|
26 | s3d_CCompSuppl *UnivProgGivenSuppl,
|
---|
27 | s3d_CUtilSnkChunk *Param, s3d_CUtilStr_cr Device, int Prop,
|
---|
28 | int Left, int Top, int Width, int Height,
|
---|
29 | int Depth, int Frequency)
|
---|
30 | {
|
---|
31 | bool IsFullscreenWindow = false;
|
---|
32 | HMONITOR hMonitor = 0;
|
---|
33 |
|
---|
34 | m_CtxWin32 = s3d_UtilRttiCastCheck<s3d_CDrvWin32CtxInterf>(
|
---|
35 | MsgHandler, Info, Ctx);
|
---|
36 | m_CtxWin32->Win32CreateWindow(
|
---|
37 | MsgHandler, Info, 0, IsFullscreenWindow, hMonitor,
|
---|
38 | Top, Left, Width, Height, Depth, Frequency);
|
---|
39 | HWND hWnd = m_CtxWin32->Win32GetWndHandle();
|
---|
40 |
|
---|
41 | UINT PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
|
---|
42 | if(Prop & s3d_CDrvGfxMgr::Prop_Synch)
|
---|
43 | PresentationInterval = D3DPRESENT_INTERVAL_ONE;
|
---|
44 |
|
---|
45 | s3d_SysMemset(&m_PresentParam, 0, S3D_SYS_SIZEOFS(m_PresentParam));
|
---|
46 | m_PresentParam.BackBufferWidth = Width;
|
---|
47 | m_PresentParam.BackBufferHeight = Height;
|
---|
48 | m_PresentParam.BackBufferFormat = D3DFMT_UNKNOWN;
|
---|
49 | m_PresentParam.BackBufferCount = 1;
|
---|
50 | m_PresentParam.MultiSampleType = D3DMULTISAMPLE_NONE;
|
---|
51 | m_PresentParam.MultiSampleQuality = 0;
|
---|
52 | m_PresentParam.SwapEffect = D3DSWAPEFFECT_DISCARD;
|
---|
53 | m_PresentParam.hDeviceWindow = hWnd;
|
---|
54 | m_PresentParam.Windowed = true;
|
---|
55 | m_PresentParam.EnabledAutoDepthStencil = true;
|
---|
56 | m_PresentParam.AutoDepthStencilFormat = D3DFMT_D24S8;
|
---|
57 | //StretchRects does not support discardable depth/stencil surfaces.
|
---|
58 | m_PresentParam.Flags = 0;//D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL;
|
---|
59 | m_PresentParam.FullScreen_RefreshRateInHz = 0;
|
---|
60 | m_PresentParam.PresentationInterval = PresentationInterval;
|
---|
61 |
|
---|
62 | m_DevFlags = 0;
|
---|
63 | m_DevFlags |= D3DCREATE_FPU_PRESERVE;
|
---|
64 | m_DevFlags |= D3DCREATE_PUREDEVICE;
|
---|
65 | m_DevFlags |= D3DCREATE_HARDWARE_VERTEXPROCESSING;
|
---|
66 |
|
---|
67 | m_D3d.EmptyRef() = Direct3DCreate9(D3D_SDK_VERSION);
|
---|
68 | m_D3d->CreateDevice(
|
---|
69 | D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, m_DevFlags,
|
---|
70 | &m_PresentParam, &m_D3dDev.EmptyRef());
|
---|
71 | }
|
---|
72 |
|
---|
73 | s3d_CDrvD3d9GfxEngNull::~s3d_CDrvD3d9GfxEngNull()
|
---|
74 | {
|
---|
75 | }
|
---|
76 |
|
---|
77 | void s3d_CDrvD3d9GfxEngNull::GetDesc(
|
---|
78 | s3d_CUtilStrBuf &Result) const
|
---|
79 | {
|
---|
80 | Result.Reset();
|
---|
81 | Result.Append("null");
|
---|
82 | }
|
---|
83 |
|
---|
84 | s3d_CDrvGfxOutPtr s3d_CDrvD3d9GfxEngNull::CreateOut(
|
---|
85 | s3d_CUtilStr_cr Info, s3d_CDrvCtx *Ctx,
|
---|
86 | s3d_CUtilStr_cr Device, int Prop,
|
---|
87 | int Left, int Top, int Width, int Height,
|
---|
88 | int Depth, int Frequency, s3d_CUtilSnkChunk *Param) = 0
|
---|
89 | {
|
---|
90 | return 0;
|
---|
91 | }
|
---|
92 |
|
---|
93 | s3d_CDrvGfxOutPtr s3d_CDrvD3d9GfxEngNull::CreateOut(
|
---|
94 | s3d_CUtilStr_cr Info, s3d_CDrvCtx *Ctx,
|
---|
95 | s3d_CUtilStr_cr Device, int Prop,
|
---|
96 | int Left, int Top, int Width, int Height,
|
---|
97 | int Depth, int Frequency, s3d_CUtilRecogBase *Param)
|
---|
98 | {
|
---|
99 | }
|
---|
100 |
|
---|
101 | s3d_CUtilSnkChunkPtr s3d_CDrvD3d9GfxEngNull::GetDefaultOutParam()
|
---|
102 | {
|
---|
103 | return 0;
|
---|
104 | }
|
---|
105 |
|
---|
106 | void s3d_CDrvD3d9GfxEngNull::RegisterNotifCtxChanged(
|
---|
107 | s3d_CUtilNotifRecip *Recip)
|
---|
108 | {
|
---|
109 | }
|
---|
110 |
|
---|
111 | void s3d_CDrvD3d9GfxEngNull::UserFunc(
|
---|
112 | s3d_CUtilCoStr Func)
|
---|
113 | {
|
---|
114 | }
|
---|
115 |
|
---|
116 | bool s3d_CDrvD3d9GfxEngNull::HasCap(
|
---|
117 | s3d_CSysIntps CapLen, const s3d_CSysChar *CapStart) const
|
---|
118 | {
|
---|
119 | return true;
|
---|
120 | }
|
---|
121 |
|
---|
122 | s3d_CDrvGfxStat *s3d_CDrvD3d9GfxEngNull::GetStat()
|
---|
123 | {
|
---|
124 | return 0;
|
---|
125 | }
|
---|
126 |
|
---|
127 | int s3d_CDrvD3d9GfxEngNull::GetSampCnt() const
|
---|
128 | {
|
---|
129 | return 32;
|
---|
130 | }
|
---|
131 |
|
---|
132 | void s3d_CDrvD3d9GfxEngNull::SnapTexSize(
|
---|
133 | int &Width, int &Height, int &Depth,
|
---|
134 | int TexProp, int SnapProp)
|
---|
135 | {
|
---|
136 | }
|
---|
137 |
|
---|
138 | s3d_CDrvGfxTexPtr s3d_CDrvD3d9GfxEngNull::CreateTexDirect(
|
---|
139 | s3d_CUtilStr_cr Info, int TexProp,
|
---|
140 | int Width, int Height, int Depth)
|
---|
141 | {
|
---|
142 | return 0;
|
---|
143 | }
|
---|
144 |
|
---|
145 | s3d_CDrvGfxTexPtr s3d_CDrvD3d9GfxEngNull::CreateTexStream(
|
---|
146 | s3d_CUtilStr_cr Info, int TexProp,
|
---|
147 | s3d_CUtilStream *Stream)
|
---|
148 | {
|
---|
149 | return 0;
|
---|
150 | }
|
---|
151 |
|
---|
152 | s3d_CDrvGfxTexPtr s3d_CDrvD3d9GfxEngNull::CreateTexVideo(
|
---|
153 | s3d_CUtilStr_cr Info, int TexProp,
|
---|
154 | s3d_CDrvVideoPlayer *VideoPlayer)
|
---|
155 | {
|
---|
156 | return 0;
|
---|
157 | }
|
---|
158 |
|
---|
159 | s3d_CDrvGfxTexPtr s3d_CDrvD3d9GfxEngNull::CreateTexIdent(
|
---|
160 | s3d_CUtilStr_cr Info, int TexProp,
|
---|
161 | s3d_CUtilStr_cr Ident)
|
---|
162 | {
|
---|
163 | return 0;
|
---|
164 | }
|
---|
165 |
|
---|
166 | s3d_CDrvGfxTexPtr s3d_CDrvD3d9GfxEngNull::CreateTexUser(
|
---|
167 | s3d_CUtilStr_cr Info, int TexProp,
|
---|
168 | s3d_CCompObj *UserObj)
|
---|
169 | {
|
---|
170 | return 0;
|
---|
171 | }
|
---|
172 |
|
---|
173 | void s3d_CDrvD3d9GfxEngNull::SetSampTex(
|
---|
174 | int Samp, s3d_CDrvGfxTex *Tex)
|
---|
175 | {
|
---|
176 | }
|
---|
177 |
|
---|
178 | void s3d_CDrvD3d9GfxEngNull::SetSampTexElseNone(
|
---|
179 | int SampStart)
|
---|
180 | {
|
---|
181 | }
|
---|
182 |
|
---|
183 | void s3d_CDrvD3d9GfxEngNull::SetSampMode(
|
---|
184 | int Samp, int SampMode)
|
---|
185 | {
|
---|
186 | }
|
---|
187 |
|
---|
188 | s3d_CDrvGfxProgPtr s3d_CDrvD3d9GfxEngNull::CreateProg(
|
---|
189 | s3d_CUtilNotifGather *NotifGather,
|
---|
190 | s3d_CUtilSnkChunk *Desc)
|
---|
191 | {
|
---|
192 | return 0;
|
---|
193 | }
|
---|
194 |
|
---|
195 | void s3d_CDrvD3d9GfxEngNull::GetSize(
|
---|
196 | int &Width, int &Height) const
|
---|
197 | {
|
---|
198 | Width = m_PresentParam.BackBufferWidth;
|
---|
199 | Height = m_PresentParam.BackBufferHeight;
|
---|
200 | }
|
---|
201 |
|
---|
202 | int s3d_CDrvD3d9GfxEngNull::GetColorBits() const
|
---|
203 | {
|
---|
204 | return 32;
|
---|
205 | }
|
---|
206 |
|
---|
207 | void s3d_CDrvD3d9GfxEngNull::SetGamma(
|
---|
208 | s3d_CUtilVec3f_cr Gamma)
|
---|
209 | {
|
---|
210 | }
|
---|
211 |
|
---|
212 | void s3d_CDrvD3d9GfxEngNull::Present()
|
---|
213 | {
|
---|
214 | EndRender();
|
---|
215 |
|
---|
216 | m_D3dDev->Present(0,0,0,0);
|
---|
217 | }
|
---|
218 |
|
---|
219 | void s3d_CDrvD3d9GfxEngNull::GetCurTargetSize(
|
---|
220 | int &Width, int &Height) const
|
---|
221 | {
|
---|
222 | Width = m_Width;
|
---|
223 | Height = m_Height;
|
---|
224 | }
|
---|
225 |
|
---|
226 | void s3d_CDrvD3d9GfxEngNull::EndRender()
|
---|
227 | {
|
---|
228 | m_Width = -1;
|
---|
229 | m_Height = -1;
|
---|
230 | }
|
---|
231 |
|
---|
232 | void s3d_CDrvD3d9GfxEngNull::BeginRenderMain(
|
---|
233 | int DestProp,
|
---|
234 | s3d_CDrvGfxOut *GfxOut)
|
---|
235 | {
|
---|
236 | m_Width = m_PresentParam.BackBufferWidth;
|
---|
237 | m_Height = m_PresentParam.BackBufferHeight;
|
---|
238 | }
|
---|
239 |
|
---|
240 | void s3d_CDrvD3d9GfxEngNull::BeginRenderTex(
|
---|
241 | int DestProp,
|
---|
242 | int Width, int Height,
|
---|
243 | s3d_CSysIntps DestCnt, const s3d_CDrvGfxDest *DestArray)
|
---|
244 | {
|
---|
245 | m_Width = Width;
|
---|
246 | m_Height = Height;
|
---|
247 | }
|
---|
248 |
|
---|
249 | void s3d_CDrvD3d9GfxEngNull::CopyIntoTex(
|
---|
250 | int Width, int Height, int SrcX, int SrcY,
|
---|
251 | s3d_CSysIntps DestCnt, const s3d_CDrvGfxDest *DestArray)
|
---|
252 | {
|
---|
253 | }
|
---|
254 |
|
---|
255 | void s3d_CDrvD3d9GfxEngNull::StoreScreenshot()
|
---|
256 | {
|
---|
257 | }
|
---|
258 |
|
---|
259 | void s3d_CDrvD3d9GfxEngNull::SetViewRect(
|
---|
260 | s3d_CUtilTranslScale2f_cr ViewRect)
|
---|
261 | {
|
---|
262 | }
|
---|
263 |
|
---|
264 | void s3d_CDrvD3d9GfxEngNull::SetViewDepthRange(
|
---|
265 | float NegZ, float PosZ)
|
---|
266 | {
|
---|
267 | }
|
---|
268 |
|
---|
269 | void s3d_CDrvD3d9GfxEngNull::Clear(
|
---|
270 | s3d_CDrvGfxClearParam_cr ClearParam)
|
---|
271 | {
|
---|
272 | /*
|
---|
273 | DWORD D3dFlags = D3DCLEAR_TARGET;
|
---|
274 | if(ClearParam.m_MustDepth)
|
---|
275 | D3dFlags |= D3DCLEAR_ZBUFFER;
|
---|
276 | if(ClearParam.m_MustStencil)
|
---|
277 | D3dFlags |= D3DCLEAR_STENCIL;
|
---|
278 | D3DCOLOR D3dColor = D3DCOLOR_COLORVALUE(
|
---|
279 | ClearParam.m_Color.m_x,
|
---|
280 | ClearParam.m_Color.m_y,
|
---|
281 | ClearParam.m_Color.m_z, 1);
|
---|
282 | m_D3dDev->Clear(
|
---|
283 | 0, 0, D3dFlags, D3dColor,
|
---|
284 | ClearParam.m_Depth, ClearParam.m_Stencil);
|
---|
285 | */
|
---|
286 | }
|
---|
287 |
|
---|
288 | void s3d_CDrvD3d9GfxEngNull::SetCullMode(
|
---|
289 | int Mode)
|
---|
290 | {
|
---|
291 | }
|
---|
292 |
|
---|
293 | void s3d_CDrvD3d9GfxEngNull::SetDepthTest(
|
---|
294 | int Mode)
|
---|
295 | {
|
---|
296 | }
|
---|
297 |
|
---|
298 | void s3d_CDrvD3d9GfxEngNull::SetDepthWrite(
|
---|
299 | bool Enabled)
|
---|
300 | {
|
---|
301 | }
|
---|
302 |
|
---|
303 | int s3d_CDrvD3d9GfxEngNull::GetStencilBits() const
|
---|
304 | {
|
---|
305 | return 8;
|
---|
306 | }
|
---|
307 |
|
---|
308 | void s3d_CDrvD3d9GfxEngNull::SetStencilMode(
|
---|
309 | int TestMask, int TestRef, int TestModeFront, int TestModeBack,
|
---|
310 | int WriteMask,
|
---|
311 | int OpFailFront, int OpDepthFailFront, int OpDepthPassFront,
|
---|
312 | int OpFailBack, int OpDepthFailBack, int OpDepthPassBack)
|
---|
313 | {
|
---|
314 | }
|
---|
315 |
|
---|
316 | void s3d_CDrvD3d9GfxEngNull::SetAlphaTest(
|
---|
317 | int Mode, float Ref)
|
---|
318 | {
|
---|
319 | }
|
---|
320 |
|
---|
321 | void s3d_CDrvD3d9GfxEngNull::SetBlendMode(
|
---|
322 | int ColSrcFac, int ColDestFac, int ColOp,
|
---|
323 | int AlphaSrcFac, int AlphaDestFac, int AlphaOp)
|
---|
324 | {
|
---|
325 | }
|
---|
326 |
|
---|
327 | void s3d_CDrvD3d9GfxEngNull::SetPaintMode(
|
---|
328 | int Mode)
|
---|
329 | {
|
---|
330 | }
|
---|
331 |
|
---|
332 | void s3d_CDrvD3d9GfxEngNull::SetPaintExt(
|
---|
333 | float Ext)
|
---|
334 | {
|
---|
335 | }
|
---|
336 |
|
---|
337 | void s3d_CDrvD3d9GfxEngNull::BeginVisib()
|
---|
338 | {
|
---|
339 | }
|
---|
340 |
|
---|
341 | s3d_CDrvGfxVisibPtr s3d_CDrvD3d9GfxEngNull::EndVisib()
|
---|
342 | {
|
---|
343 | return 0;
|
---|
344 | }
|
---|
345 |
|
---|
346 | void s3d_CDrvD3d9GfxEngNull::SetFogNone()
|
---|
347 | {
|
---|
348 | }
|
---|
349 |
|
---|
350 | void s3d_CDrvD3d9GfxEngNull::SetFogExp(
|
---|
351 | float Density, s3d_CUtilVec3f_cr Color)
|
---|
352 | {
|
---|
353 | }
|
---|
354 |
|
---|
355 | bool s3d_CDrvD3d9GfxEngNull::IsStereo() const
|
---|
356 | {
|
---|
357 | return false;
|
---|
358 | }
|
---|
359 |
|
---|
360 | void s3d_CDrvD3d9GfxEngNull::SetStereoEyeOffset(
|
---|
361 | s3d_CUtilVec3f_cr EyeOffset)
|
---|
362 | {
|
---|
363 | }
|
---|
364 |
|
---|
365 | void s3d_CDrvD3d9GfxEngNull::SetTransf(
|
---|
366 | int Chan, int Slot, s3d_CUtilMat4x4f_cr Mat)
|
---|
367 | {
|
---|
368 | }
|
---|
369 |
|
---|
370 | void s3d_CDrvD3d9GfxEngNull::SetTransfIdentity(
|
---|
371 | int Chan, int Slot)
|
---|
372 | {
|
---|
373 | }
|
---|
374 |
|
---|
375 | void s3d_CDrvD3d9GfxEngNull::SetClipPlane(
|
---|
376 | s3d_CUtilVec4f_cr Plane)
|
---|
377 | {
|
---|
378 | }
|
---|
379 |
|
---|
380 | void s3d_CDrvD3d9GfxEngNull::SetDepthBias(
|
---|
381 | float BiasOverlay, float BiasOffs)
|
---|
382 | {
|
---|
383 | }
|
---|
384 |
|
---|
385 | void s3d_CDrvD3d9GfxEngNull::DisableLighting()
|
---|
386 | {
|
---|
387 | }
|
---|
388 |
|
---|
389 | void s3d_CDrvD3d9GfxEngNull::SetLightArray(
|
---|
390 | s3d_CSysIntps LightCnt,
|
---|
391 | s3d_CDrvGfxLight **LightArray)
|
---|
392 | {
|
---|
393 | }
|
---|
394 |
|
---|
395 | void s3d_CDrvD3d9GfxEngNull::SetMtl(
|
---|
396 | s3d_CUtilVec3f_cr Ambient, s3d_CUtilVec3f_cr Diffuse,
|
---|
397 | s3d_CUtilVec3f_cr Specular, s3d_CUtilVec3f_cr Emissive,
|
---|
398 | float SpecExp, float Alpha)
|
---|
399 | {
|
---|
400 | }
|
---|
401 |
|
---|
402 | void s3d_CDrvD3d9GfxEngNull::SetColorAlpha(
|
---|
403 | s3d_CUtilVec4f_cr ColorAlpha)
|
---|
404 | {
|
---|
405 | }
|
---|
406 |
|
---|
407 | void s3d_CDrvD3d9GfxEngNull::GetPacketLimits(
|
---|
408 | s3d_CSysIntps &MaxVertCnt, s3d_CSysIntps &MaxPrimCnt,
|
---|
409 | int Prim)
|
---|
410 | {
|
---|
411 | MaxVertCnt = -1;
|
---|
412 | MaxPrimCnt = -1;
|
---|
413 | }
|
---|
414 |
|
---|
415 | s3d_CDrvGfxBatchPtr s3d_CDrvD3d9GfxEngNull::CreateBatch(
|
---|
416 | const s3d_CDrvGfxCharge *Charge)
|
---|
417 | {
|
---|
418 | return 0;
|
---|
419 | }
|
---|
420 |
|
---|
421 | void s3d_CDrvD3d9GfxEngNull::ExecuteCharge(
|
---|
422 | const s3d_CDrvGfxCharge *Charge, s3d_CDrvGfxBatch *Batch,
|
---|
423 | s3d_CDrvGfxParam_cr GfxParam)
|
---|
424 | {
|
---|
425 | }
|
---|
426 |
|
---|
427 | ///////////////////////////////////////////////////////////////////////////////
|
---|
428 |
|
---|
429 | #endif // S3D_DRV_D3D9_USE_ENGNULL
|
---|