source: GTP/trunk/App/Demos/Geom/Shark3D/src/drv_d3d9_engnull.cpp @ 2236

Revision 2236, 10.3 KB checked in by gumbau, 17 years ago (diff)
Line 
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
20s3d_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
73s3d_CDrvD3d9GfxEngNull::~s3d_CDrvD3d9GfxEngNull()
74{
75}
76
77void s3d_CDrvD3d9GfxEngNull::GetDesc(
78        s3d_CUtilStrBuf &Result) const
79{
80    Result.Reset();
81    Result.Append("null");
82}
83
84s3d_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
93s3d_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
101s3d_CUtilSnkChunkPtr s3d_CDrvD3d9GfxEngNull::GetDefaultOutParam()
102{
103    return 0;
104}
105
106void s3d_CDrvD3d9GfxEngNull::RegisterNotifCtxChanged(
107        s3d_CUtilNotifRecip *Recip)
108{
109}
110
111void s3d_CDrvD3d9GfxEngNull::UserFunc(
112        s3d_CUtilCoStr Func)
113{
114}
115
116bool s3d_CDrvD3d9GfxEngNull::HasCap(
117        s3d_CSysIntps CapLen, const s3d_CSysChar *CapStart) const
118{
119    return true;
120}
121
122s3d_CDrvGfxStat *s3d_CDrvD3d9GfxEngNull::GetStat()
123{
124    return 0;
125}
126
127int s3d_CDrvD3d9GfxEngNull::GetSampCnt() const
128{
129    return 32;
130}
131
132void s3d_CDrvD3d9GfxEngNull::SnapTexSize(
133        int &Width, int &Height, int &Depth,
134        int TexProp, int SnapProp)
135{
136}
137
138s3d_CDrvGfxTexPtr s3d_CDrvD3d9GfxEngNull::CreateTexDirect(
139        s3d_CUtilStr_cr Info, int TexProp,
140        int Width, int Height, int Depth)
141{
142    return 0;
143}
144
145s3d_CDrvGfxTexPtr s3d_CDrvD3d9GfxEngNull::CreateTexStream(
146        s3d_CUtilStr_cr Info, int TexProp,
147        s3d_CUtilStream *Stream)
148{
149    return 0;
150}
151
152s3d_CDrvGfxTexPtr s3d_CDrvD3d9GfxEngNull::CreateTexVideo(
153        s3d_CUtilStr_cr Info, int TexProp,
154        s3d_CDrvVideoPlayer *VideoPlayer)
155{
156    return 0;
157}
158
159s3d_CDrvGfxTexPtr s3d_CDrvD3d9GfxEngNull::CreateTexIdent(
160        s3d_CUtilStr_cr Info, int TexProp,
161        s3d_CUtilStr_cr Ident)
162{
163    return 0;
164}
165
166s3d_CDrvGfxTexPtr s3d_CDrvD3d9GfxEngNull::CreateTexUser(
167        s3d_CUtilStr_cr Info, int TexProp,
168        s3d_CCompObj *UserObj)
169{
170    return 0;
171}
172
173void s3d_CDrvD3d9GfxEngNull::SetSampTex(
174        int Samp, s3d_CDrvGfxTex *Tex)
175{
176}
177
178void s3d_CDrvD3d9GfxEngNull::SetSampTexElseNone(
179        int SampStart)
180{
181}
182
183void s3d_CDrvD3d9GfxEngNull::SetSampMode(
184        int Samp, int SampMode)
185{
186}
187
188s3d_CDrvGfxProgPtr s3d_CDrvD3d9GfxEngNull::CreateProg(
189        s3d_CUtilNotifGather *NotifGather,
190        s3d_CUtilSnkChunk *Desc)
191{
192    return 0;
193}
194
195void s3d_CDrvD3d9GfxEngNull::GetSize(
196        int &Width, int &Height) const
197{
198    Width = m_PresentParam.BackBufferWidth;
199    Height = m_PresentParam.BackBufferHeight;
200}
201
202int s3d_CDrvD3d9GfxEngNull::GetColorBits() const
203{
204    return 32;
205}
206
207void s3d_CDrvD3d9GfxEngNull::SetGamma(
208        s3d_CUtilVec3f_cr Gamma)
209{
210}
211
212void s3d_CDrvD3d9GfxEngNull::Present()
213{
214    EndRender();
215
216    m_D3dDev->Present(0,0,0,0);
217}
218
219void s3d_CDrvD3d9GfxEngNull::GetCurTargetSize(
220        int &Width, int &Height) const
221{
222    Width = m_Width;
223    Height = m_Height;
224}
225
226void s3d_CDrvD3d9GfxEngNull::EndRender()
227{
228    m_Width = -1;
229    m_Height = -1;
230}
231
232void 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
240void 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
249void s3d_CDrvD3d9GfxEngNull::CopyIntoTex(
250        int Width, int Height, int SrcX, int SrcY,
251        s3d_CSysIntps DestCnt, const s3d_CDrvGfxDest *DestArray)
252{
253}
254
255void s3d_CDrvD3d9GfxEngNull::StoreScreenshot()
256{
257}
258
259void s3d_CDrvD3d9GfxEngNull::SetViewRect(
260        s3d_CUtilTranslScale2f_cr ViewRect)
261{
262}
263
264void s3d_CDrvD3d9GfxEngNull::SetViewDepthRange(
265        float NegZ, float PosZ)
266{
267}
268
269void 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
288void s3d_CDrvD3d9GfxEngNull::SetCullMode(
289        int Mode)
290{
291}
292
293void s3d_CDrvD3d9GfxEngNull::SetDepthTest(
294        int Mode)
295{
296}
297
298void s3d_CDrvD3d9GfxEngNull::SetDepthWrite(
299        bool Enabled)
300{
301}
302
303int s3d_CDrvD3d9GfxEngNull::GetStencilBits() const
304{
305    return 8;
306}
307
308void 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
316void s3d_CDrvD3d9GfxEngNull::SetAlphaTest(
317        int Mode, float Ref)
318{
319}
320
321void s3d_CDrvD3d9GfxEngNull::SetBlendMode(
322        int ColSrcFac, int ColDestFac, int ColOp,
323        int AlphaSrcFac, int AlphaDestFac, int AlphaOp)
324{
325}
326
327void s3d_CDrvD3d9GfxEngNull::SetPaintMode(
328        int Mode)
329{
330}
331
332void s3d_CDrvD3d9GfxEngNull::SetPaintExt(
333        float Ext)
334{
335}
336
337void s3d_CDrvD3d9GfxEngNull::BeginVisib()
338{
339}
340
341s3d_CDrvGfxVisibPtr s3d_CDrvD3d9GfxEngNull::EndVisib()
342{
343    return 0;
344}
345
346void s3d_CDrvD3d9GfxEngNull::SetFogNone()
347{
348}
349
350void s3d_CDrvD3d9GfxEngNull::SetFogExp(
351        float Density, s3d_CUtilVec3f_cr Color)
352{
353}
354
355bool s3d_CDrvD3d9GfxEngNull::IsStereo() const
356{
357    return false;
358}
359
360void s3d_CDrvD3d9GfxEngNull::SetStereoEyeOffset(
361        s3d_CUtilVec3f_cr EyeOffset)
362{
363}
364
365void s3d_CDrvD3d9GfxEngNull::SetTransf(
366        int Chan, int Slot, s3d_CUtilMat4x4f_cr Mat)
367{
368}
369
370void s3d_CDrvD3d9GfxEngNull::SetTransfIdentity(
371        int Chan, int Slot)
372{
373}
374
375void s3d_CDrvD3d9GfxEngNull::SetClipPlane(
376        s3d_CUtilVec4f_cr Plane)
377{
378}
379
380void s3d_CDrvD3d9GfxEngNull::SetDepthBias(
381        float BiasOverlay, float BiasOffs)
382{
383}
384
385void s3d_CDrvD3d9GfxEngNull::DisableLighting()
386{
387}
388
389void s3d_CDrvD3d9GfxEngNull::SetLightArray(
390        s3d_CSysIntps LightCnt,
391        s3d_CDrvGfxLight **LightArray)
392{
393}
394
395void 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
402void s3d_CDrvD3d9GfxEngNull::SetColorAlpha(
403        s3d_CUtilVec4f_cr ColorAlpha)
404{
405}
406
407void s3d_CDrvD3d9GfxEngNull::GetPacketLimits(
408        s3d_CSysIntps &MaxVertCnt, s3d_CSysIntps &MaxPrimCnt,
409        int Prim)
410{
411    MaxVertCnt = -1;
412    MaxPrimCnt = -1;
413}
414
415s3d_CDrvGfxBatchPtr s3d_CDrvD3d9GfxEngNull::CreateBatch(
416        const s3d_CDrvGfxCharge *Charge)
417{
418    return 0;
419}
420
421void 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
Note: See TracBrowser for help on using the repository browser.