source: GTP/trunk/App/Demos/Geom/Shark3D/src/drv_d3d9_buf.h @ 2236

Revision 2236, 18.4 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//@cpp
15#ifndef S3D_DRV_D3D9_BUF_H
16#define S3D_DRV_D3D9_BUF_H
17
18#include "drv_d3d9_types.h"
19#include "drv_d3d9_vertdecl.h"
20#include "drv_d3d9_param.h"
21#include "drv_d3d9_progmgr.h"
22#include "drv_d3d9_env.h"
23#include "util/cont/util_deque.h"
24
25///////////////////////////////////////////////////////////////////////////////
26
27//@
28struct s3d_CDrvD3d9VertBufDesc
29{
30    s3d_CDrvGfxAttr *m_PointAttr;
31    s3d_CDrvGfxAttr *m_ColorAlphaAttr;
32    s3d_CDrvGfxAttr *m_NormalAttr;
33    s3d_CDrvGfxAttr *m_BoneWghAttr;
34    s3d_CDrvGfxAttr *m_BoneSubscrAttr;
35    s3d_CDrvGfxAttr *m_TexAttrArray[S3D_DRV_D3D9_MAX_ATTR_CNT];
36
37    s3d_CSysIntps m_VertElemCnt;
38    D3DVERTEXELEMENT9 m_VertElemArray[S3D_DRV_D3D9_MAX_VERTELEM_CNT];
39    s3d_CSysIntps m_VertSize;
40
41    int m_VertBufFmtDecl;
42
43    s3d_CDrvD3d9VertBufDesc();
44    void Reset();
45
46    //@
47    enum CDecl
48    {
49        //@
50        Decl_Generic            = (1 << 0),
51
52        //@
53        Decl_Point              = (1 << 1),
54
55        //@
56        Decl_ColorAlpha         = (1 << 2),
57
58        //@
59        Decl_Normal             = (1 << 3),
60
61        //@
62        Decl_BoneWgh            = (1 << 4),
63
64        //@
65        Decl_BoneSubscr         = (1 << 5),
66
67        //@
68        Decl_DummyBoneWgh       = (1 << 6),
69
70        //@
71        Decl_DummyBoneSubscr    = (1 << 7),
72    };
73
74};
75
76//@
77typedef const s3d_CDrvD3d9VertBufDesc &s3d_CDrvD3d9VertBufDesc_cr;
78
79///////////////////////////////////////////////////////////////////////////////
80
81class s3d_CDrvD3d9DummyWghBank
82        : public s3d_CDrvBank
83{
84public:
85    s3d_CDrvD3d9DummyWghBank();
86
87    void Fetch(
88            s3d_CUtilMsgHandler *MsgHandler, const s3d_CSysChar *Info,
89            s3d_CDrvBankContent &BankContent);
90
91    s3d_CUtilPtrBase *GetOwner(
92            s3d_CUtilMsgHandler *MsgHandler, const s3d_CSysChar *Info);
93
94private:
95    float m_Data[4];
96};
97
98///////////////////////////////////////////////////////////////////////////////
99
100struct s3d_CDrvD3d9DummyWghAttr
101        : public s3d_CDrvGfxAttr
102{
103    s3d_CDrvD3d9DummyWghAttr();
104
105    s3d_CDrvD3d9DummyWghBank m_DummyWghBank;
106};
107
108///////////////////////////////////////////////////////////////////////////////
109
110class s3d_CDrvD3d9DummySubscrBank
111        : public s3d_CDrvBank
112{
113public:
114    s3d_CDrvD3d9DummySubscrBank();
115
116    void Fetch(
117            s3d_CUtilMsgHandler *MsgHandler, const s3d_CSysChar *Info,
118            s3d_CDrvBankContent &BankContent);
119
120    s3d_CUtilPtrBase *GetOwner(
121            s3d_CUtilMsgHandler *MsgHandler, const s3d_CSysChar *Info);
122private:
123    s3d_CSysInt32u m_Data[4];
124};
125
126///////////////////////////////////////////////////////////////////////////////
127
128struct s3d_CDrvD3d9DummySubscrAttr
129        : public s3d_CDrvGfxAttr
130{
131    s3d_CDrvD3d9DummySubscrAttr();
132
133    s3d_CDrvD3d9DummySubscrBank m_DummySubscrBank;
134};
135
136///////////////////////////////////////////////////////////////////////////////
137
138//@
139struct s3d_CDrvD3d9VertBufObj
140        : public s3d_CUtilPtrBase
141{
142    s3d_CUtilStr m_MainInfo;
143    s3d_CDrvD3d9VertBuf m_VertBuf;
144    s3d_CSysIntps m_BufSize;
145    s3d_CSysIntps m_VertSize;
146    s3d_CDrvD3d9VertDecl m_VertDecl;
147    int m_VertBufFmtDecl;
148
149    DWORD m_Usage;
150    D3DPOOL m_Pool;
151
152    s3d_CUtilMsgHandlerPtr m_ReportMsgHandler;
153    ~s3d_CDrvD3d9VertBufObj();
154
155    void Reset();
156};
157
158//@
159typedef s3d_CUtilPtr<s3d_CDrvD3d9VertBufObj> s3d_CDrvD3d9VertBufObjPtr;
160
161///////////////////////////////////////////////////////////////////////////////
162
163//@
164struct s3d_CDrvD3d9VertBufAttr
165{
166    bool m_BankDyn;
167    s3d_CDrvSigPtr m_BankSig;
168    int m_Chan;
169    int m_Slot;
170};
171
172///////////////////////////////////////////////////////////////////////////////
173
174//@
175struct s3d_CDrvD3d9VertBufObjBatch
176        : public s3d_CDrvD3d9VertBufObj
177{
178    s3d_CDrvD3d9VertBufObjBatch();
179    ~s3d_CDrvD3d9VertBufObjBatch();
180
181    s3d_CUtilStr m_MainInfo;
182    bool m_Complete;
183
184    s3d_CDrvSigPtr m_TopolSig;
185    s3d_CSysIntps m_AttrCnt;
186    s3d_CUtilOwnArray<s3d_CDrvD3d9VertBufAttr> m_AttrArray;
187    s3d_CUtilTree<s3d_CDrvD3d9VertBufObjBatch *>::CNode m_Node;
188};
189
190//@
191typedef s3d_CUtilPtr<s3d_CDrvD3d9VertBufObjBatch>
192        s3d_CDrvD3d9VertBufObjBatchPtr;
193
194//@
195typedef s3d_CUtilTree<s3d_CDrvD3d9VertBufObjBatch *>
196        s3d_CDrvD3d9VertBufObjBatchTree;
197
198
199///////////////////////////////////////////////////////////////////////////////
200
201//@
202struct s3d_CDrvD3d9VertBufObjBatchRef
203{
204    s3d_CDrvSig *m_TopolSig;
205    s3d_CDrvGfxAttr *m_AttrArray;
206    s3d_CSysIntps m_AttrCnt;
207
208    static int Compare(
209            const s3d_CDrvD3d9VertBufObjBatch *VertBufObj,
210            const s3d_CDrvD3d9VertBufObjBatchRef &Ref);
211};
212
213//@
214bool operator==(
215        const s3d_CDrvD3d9VertBufObjBatch *VertBufObj,
216        const s3d_CDrvD3d9VertBufObjBatchRef &Ref);
217
218//@
219bool operator<(
220        const s3d_CDrvD3d9VertBufObjBatch *VertBufObj,
221        const s3d_CDrvD3d9VertBufObjBatchRef &Ref);
222
223///////////////////////////////////////////////////////////////////////////////
224
225//@
226struct s3d_CDrvD3d9Packet
227{
228    s3d_CSysInt32u m_VertCnt;
229    s3d_CSysInt32u m_IdxCnt;
230    s3d_CSysInt32u m_PrimCnt;
231    s3d_CSysInt32u m_BoneIdxCnt;
232};
233
234///////////////////////////////////////////////////////////////////////////////
235
236//@
237struct s3d_CDrvD3d9IdxBufObj
238        : public s3d_CUtilPtrBase
239{
240    s3d_CDrvD3d9IdxBuf m_IdxBuf;
241    s3d_CSysIntps m_IdxCnt;
242    s3d_CSysIntps m_BufSize;
243
244    D3DFORMAT m_Fmt;
245    D3DPRIMITIVETYPE m_D3dPrim;
246    DWORD m_Usage;
247    D3DPOOL m_Pool;
248
249    s3d_CUtilMsgHandlerPtr m_ReportMsgHandler;
250    ~s3d_CDrvD3d9IdxBufObj();
251    void Reset();
252};
253
254//@
255typedef s3d_CUtilPtr<s3d_CDrvD3d9IdxBufObj> s3d_CDrvD3d9IdxBufObjPtr;
256
257///////////////////////////////////////////////////////////////////////////////
258
259//@
260struct s3d_CDrvD3d9IdxBufObjBatch
261        : public s3d_CDrvD3d9IdxBufObj
262{
263    s3d_CDrvD3d9IdxBufObjBatch();
264    ~s3d_CDrvD3d9IdxBufObjBatch();
265
266    s3d_CSysIntps m_BoneIdxCnt;
267    s3d_CUtilOwnArray<s3d_CSysInt32u> m_BoneIdxArray;
268
269    s3d_CSysIntps m_PacketCnt;
270    s3d_CUtilOwnArray<s3d_CDrvD3d9Packet> m_PacketArray;
271
272    s3d_CDrvSigPtr m_TopolSig;
273    s3d_CUtilTree<s3d_CDrvD3d9IdxBufObjBatch *>::CNode m_Node;
274};
275
276//@
277typedef s3d_CUtilPtr<s3d_CDrvD3d9IdxBufObjBatch> s3d_CDrvD3d9IdxBufObjBatchPtr;
278
279//@
280typedef s3d_CUtilTree<s3d_CDrvD3d9IdxBufObjBatch *>
281        s3d_CDrvD3d9IdxBufObjBatchTree;
282
283///////////////////////////////////////////////////////////////////////////////
284
285//@
286struct s3d_CDrvD3d9IdxBufObjBatchRef
287{
288    s3d_CDrvSig *m_TopolSig;
289
290    static int Compare(
291            const s3d_CDrvD3d9IdxBufObjBatch *IdxBufObj,
292            const s3d_CDrvD3d9IdxBufObjBatchRef &Ref);
293};
294
295//@
296bool operator==(
297        const s3d_CDrvD3d9IdxBufObjBatch *IdxBufObj,
298        const s3d_CDrvD3d9IdxBufObjBatchRef &Ref);
299
300//@
301bool operator<(
302        const s3d_CDrvD3d9IdxBufObjBatch *IdxBufObj,
303        const s3d_CDrvD3d9IdxBufObjBatchRef &Ref);
304
305///////////////////////////////////////////////////////////////////////////////
306
307//@
308struct s3d_CDrvD3d9BufMgrVertBuf
309{
310    s3d_CDrvD3d9VertBuf m_VertBuf;
311    s3d_CSysIntps m_UsedSize;
312
313    s3d_CDrvD3d9BufMgrVertBuf();
314    void Reset();
315};
316
317///////////////////////////////////////////////////////////////////////////////
318
319//@
320struct s3d_CDrvD3d9IdxBufMem
321{
322    const s3d_CSysIntm *m_Data;
323    D3DFORMAT m_Fmt;
324    D3DPRIMITIVETYPE m_Prim;
325};
326
327///////////////////////////////////////////////////////////////////////////////
328
329//@
330struct s3d_CDrvD3d9VertBufMem
331{
332    const s3d_CSysIntm *m_Data;
333    s3d_CDrvD3d9VertDecl m_VertDecl;
334    s3d_CSysIntps m_VertSize;
335    int m_VertBufFmtDecl;
336};
337
338///////////////////////////////////////////////////////////////////////////////
339
340//@
341class s3d_CDrvD3d9BufMgr
342        : public s3d_CUtilPtrBase
343{
344public:
345    s3d_CDrvD3d9BufMgr(
346            s3d_CUtilMsgHandler *MsgHandler, s3d_CDrvD3d9ProgMgr *ProgMgr,
347            s3d_CDrvD3d9Env &Env, s3d_CDrvD3d9Param *D3dParam,
348            s3d_CSysIntps VertIdxLimit, LPDIRECT3DDEVICE9 D3dDev);
349    ~s3d_CDrvD3d9BufMgr();
350
351    // Vertex buffer
352    s3d_CDrvD3d9VertBufObjBatchPtr CreateVertBufObjStatic(
353            const s3d_CDrvGfxCharge *Charge, s3d_CDrvD3d9ProgMgr *ProgMgr,
354            bool SWVertProc);
355    s3d_CDrvD3d9VertBufObjPtr FetchVertBufObjDyn(
356            s3d_CUtilMemPool *MemPool, const s3d_CDrvGfxCharge *Charge,
357            s3d_CDrvD3d9ProgMgr *ProgMgr, bool SWVertProc);
358    const s3d_CSysIntm *CheckVertBufDirectPointFloat3(
359            const s3d_CDrvGfxCharge *Charge,
360            s3d_CDrvD3d9VertBufDesc_cr VertBufDesc);
361    void FetchVertBufMemDyn(
362            s3d_CUtilMemPool *MemPool, const s3d_CDrvGfxCharge *Charge,
363            s3d_CDrvD3d9ProgMgr *ProgMgr, s3d_CDrvD3d9VertBufMem &VertBuf);
364
365    // Index buffer
366    s3d_CDrvD3d9IdxBufObjBatchPtr CreateIdxBufObjStatic(
367            const s3d_CDrvGfxCharge *Charge, DWORD Usage, D3DPOOL Pool);
368    s3d_CDrvD3d9IdxBufObjPtr FetchIdxBufObjDyn(
369            s3d_CUtilMemPool *MemPool, const s3d_CDrvGfxCharge *Charge,
370            s3d_CUtilMemPoolArray<s3d_CSysInt32u> &BoneIdxArray,
371            DWORD Usage, D3DPOOL Pool);
372    void FetchIdxBufMemDyn(
373            s3d_CUtilMemPool *MemPool, const s3d_CDrvGfxCharge *Charge,
374            s3d_CDrvD3d9IdxBufMem &IdxBuf,
375            s3d_CUtilMemPoolArray<s3d_CSysInt32u> &BoneIdxArray);
376
377    // Packet data
378    void LoadBatchPacketData(
379            const s3d_CDrvGfxCharge *Charge,
380            s3d_CSysIntps PacketCnt, s3d_CDrvD3d9Packet *PacketArray,
381            s3d_CSysIntps PacketSubBase);
382
383    void Park();
384    void Unpark();
385
386    const s3d_CDrvD3d9VertBuf &GetVertBufDummyBlendWghIdx() const;
387
388private:
389    s3d_CUtilMsgHandlerPtr m_MsgHandler;
390    s3d_CDrvD3d9VertBufObjPtr m_VertBufDyn;
391    s3d_CDrvD3d9VertBufObjBatchTree m_VertBufTree;
392    s3d_CDrvD3d9IdxBufObjPtr m_IdxBufDyn;
393    s3d_CDrvD3d9IdxBufObjBatchTree m_IdxBufTree;
394    s3d_CDrvD3d9BufMgrVertBuf m_VertBufDummyWghIdx;
395    s3d_CUtilMap<s3d_CDrvD3d9VertElemObjKey, s3d_CDrvD3d9VertDecl>
396            m_VertDeclMap;
397    s3d_CDrvD3d9ProgMgrPtr m_ProgMgr;
398    s3d_CDrvD3d9Device m_D3dDev;
399    s3d_CDrvD3d9Env *m_Env;
400    s3d_CDrvD3d9ParamPtr m_D3dParam;
401
402    s3d_CSysIntps m_VertIdxLimit;
403    bool m_PreferIdxBuf32;
404
405    // Vertex declaration
406    void FindVertDecl(
407            s3d_CDrvD3d9VertBufDesc VertBufFmt,
408            s3d_CDrvD3d9VertDecl &VertDecl);
409
410    // Vertex buffer
411    s3d_CDrvD3d9VertBufObjBatchPtr AllocVertBufObj(
412            const s3d_CDrvGfxCharge *Charge,
413            const s3d_CDrvD3d9VertBufDesc &VertBufFmt,
414            LPDIRECT3DVERTEXDECLARATION9 VertDecl, bool SWVertProc);
415    void LoadVertBuf(
416            const s3d_CDrvGfxCharge *Charge, s3d_CDrvD3d9VertBufObj *VertBuf,
417            const s3d_CDrvD3d9VertBufDesc &VertBufDesc,
418            s3d_CSysIntps DestStartOffs, s3d_CSysIntps DestVertBase,
419            s3d_CSysIntps VertBase, s3d_CSysIntps VertCnt,
420            bool DynOnly, bool Discard);
421    void LoadVertBufData(
422            const s3d_CDrvGfxCharge *Charge,
423            const s3d_CDrvD3d9VertBufDesc &VertBufDesc, s3d_CSysIntm *Dest,
424            s3d_CSysIntps VertBase, s3d_CSysIntps VertCnt, bool DynOnly);
425    void CalcVertBufDesc(
426            const s3d_CDrvGfxCharge *Charge,
427            s3d_CDrvD3d9VertBufDesc &VertBufDesc);
428
429    // Index buffer
430    s3d_CDrvD3d9IdxBufObjBatchPtr AllocIdxBufObj(
431            const s3d_CDrvGfxCharge *Charge,
432            D3DFORMAT Fmt, DWORD Usage, D3DPOOL Pool);
433    void LoadIdxBuf(
434            const s3d_CDrvGfxCharge *Charge, s3d_CDrvD3d9IdxBufObj *IdxBuf,
435            s3d_CSysIntps DestIdxBase, s3d_CSysIntps VertOffset,
436            s3d_CSysIntps IdxBase, bool Discard);
437    void LoadIdxBufData(
438            const s3d_CDrvGfxCharge *Charge, D3DFORMAT Fmt, s3d_CSysIntm
439                    *Dest,
440            s3d_CSysIntps IdxCnt, s3d_CSysIntps DestIdxBase,
441            s3d_CSysIntps VertOffset, s3d_CSysIntps IdxBase);
442
443    D3DFORMAT CalcIdxBufFmtOfCnt(
444            const s3d_CSysChar *Info, s3d_CSysIntps Cnt, bool Prefer32);
445    s3d_CSysIntps CalcSizeOfFmtCnt(
446            D3DFORMAT IndexBufFmt, s3d_CSysIntps Cnt);
447    s3d_CSysIntps CalcCntOfFmtSize(
448            D3DFORMAT IndexBufFmt, s3d_CSysIntps Size);
449
450    void CheckAllocDummyBuffers(
451            const s3d_CDrvGfxCharge* Charge, int VertBufFmtDecl, bool
452                    SWVertProc);
453    void CreateDummyVertBuf(
454            DWORD Usage, D3DPOOL Pool);
455   
456    void Reset();
457    void FreeDynBuffers();
458};
459
460//@
461typedef s3d_CUtilPtr<s3d_CDrvD3d9BufMgr> s3d_CDrvD3d9BufMgrPtr;
462
463///////////////////////////////////////////////////////////////////////////////
464
465//@
466struct s3d_CDrvD3d9BufInitUtil
467{
468    //@
469    static void InitFloatX2ToFloat32X2(
470            s3d_CSysIntm *pDest, s3d_CSysIntps VertexSize,
471            const s3d_CSysIntm *pSrc, s3d_CSysIntps Cnt,
472            s3d_CSysIntps Stride);
473    //@
474    static void InitFloatX3ToFloat32X3(
475            s3d_CSysIntm *pDest, s3d_CSysIntps VertexSize,
476            const s3d_CSysIntm *pSrc, s3d_CSysIntps Cnt,
477            s3d_CSysIntps Stride);
478    //@
479    static void InitFloatX4ToFloat32X4(
480            s3d_CSysIntm *pDest, s3d_CSysIntps VertexSize,
481            const s3d_CSysIntm *pSrc, s3d_CSysIntps Cnt,
482            s3d_CSysIntps Stride);
483    //@
484    static void InitFloatX3ToColor(
485            s3d_CSysIntm *pDest, s3d_CSysIntps VertexSize,
486            const s3d_CSysIntm *pSrc, s3d_CSysIntps Cnt,
487            s3d_CSysIntps Stride);
488    //@
489    static void InitFloatX4ToColor(
490            s3d_CSysIntm *pDest, s3d_CSysIntps VertexSize,
491            const s3d_CSysIntm *pSrc, s3d_CSysIntps Cnt,
492            s3d_CSysIntps Stride);
493    //@
494    static void InitIntX4ToInt8uX4(
495            s3d_CSysIntm *pDest, s3d_CSysIntps VertexSize,
496            const s3d_CSysIntm *pSrc, s3d_CSysIntps Cnt,
497            s3d_CSysIntps Stride);
498    //@
499    // Compress float[-1..1] to int[0..255]
500    // e.g. normals
501    static void InitFloatX3ToInt8uX4(
502            s3d_CSysIntm *pDest, s3d_CSysIntps VertexSize,
503            const s3d_CSysIntm *pSrc, s3d_CSysIntps Cnt,
504            s3d_CSysIntps Stride);
505    //@
506    // Compress float[0..1] to int[0..255]
507    // e.g. blendweights
508    static void InitFloatX4ToInt8uX4(
509            s3d_CSysIntm *pDest, s3d_CSysIntps VertexSize,
510            const s3d_CSysIntm *pSrc, s3d_CSysIntps Cnt,
511            s3d_CSysIntps Stride);
512
513    //@
514    static void VertFormatError(
515            s3d_CUtilMsgHandler *MsgHandler, const s3d_CDrvGfxCharge *Charge);
516};
517
518///////////////////////////////////////////////////////////////////////////////
519// Implementations:
520///////////////////////////////////////////////////////////////////////////////
521
522S3D_SYS_INLINE
523s3d_CDrvD3d9DummyWghBank::s3d_CDrvD3d9DummyWghBank()
524{
525    m_Data[0] = 1;
526    m_Data[1] = 0;
527    m_Data[2] = 0;
528    m_Data[3] = 0;
529}
530
531S3D_SYS_INLINE
532void s3d_CDrvD3d9DummyWghBank::Fetch(
533        s3d_CUtilMsgHandler *MsgHandler, const s3d_CSysChar *Info,
534        s3d_CDrvBankContent &BankContent)
535{
536    BankContent.m_Cnt = 1;
537    BankContent.m_Data = reinterpret_cast<s3d_CSysIntm*>(&m_Data);
538    BankContent.m_Stride = 0;
539    BankContent.m_TypeDesc =  s3d_DrvDataGetTypeDesc<s3d_CDrvFloat32X4>();
540}
541
542S3D_SYS_INLINE
543s3d_CUtilPtrBase *s3d_CDrvD3d9DummyWghBank::GetOwner(
544        s3d_CUtilMsgHandler *MsgHandler, const s3d_CSysChar *Info)
545{
546    return 0;
547}
548
549///////////////////////////////////////////////////////////////////////////////
550
551S3D_SYS_INLINE
552s3d_CDrvD3d9DummyWghAttr::s3d_CDrvD3d9DummyWghAttr()
553{
554    m_Bank = &m_DummyWghBank;
555    m_BankDyn = false;
556    m_BankSig = 0;
557    m_Chan = s3d_CDrvGfxEng::AttrChan_BoneWgh;
558    m_Slot = 0;
559}
560
561///////////////////////////////////////////////////////////////////////////////
562
563S3D_SYS_INLINE
564s3d_CDrvD3d9DummySubscrBank::s3d_CDrvD3d9DummySubscrBank()
565{
566    m_Data[0] = 0;
567    m_Data[1] = 1;
568    m_Data[2] = 2;
569    m_Data[3] = 3;
570}
571
572S3D_SYS_INLINE
573void s3d_CDrvD3d9DummySubscrBank::Fetch(
574        s3d_CUtilMsgHandler *MsgHandler, const s3d_CSysChar *Info,
575        s3d_CDrvBankContent &BankContent)
576{
577    BankContent.m_Cnt = 1;
578    BankContent.m_Data = reinterpret_cast<s3d_CSysIntm*>(&m_Data);
579    BankContent.m_Stride = 0;
580    BankContent.m_TypeDesc =  s3d_DrvDataGetTypeDesc<s3d_CDrvInt32uX4>();
581}
582
583S3D_SYS_INLINE
584s3d_CUtilPtrBase *s3d_CDrvD3d9DummySubscrBank::GetOwner(
585        s3d_CUtilMsgHandler *MsgHandler, const s3d_CSysChar *Info)
586{
587    return 0;
588}
589
590///////////////////////////////////////////////////////////////////////////////
591
592S3D_SYS_INLINE
593s3d_CDrvD3d9DummySubscrAttr::s3d_CDrvD3d9DummySubscrAttr()
594{
595    m_Bank = &m_DummySubscrBank;
596    m_BankDyn = false;
597    m_BankSig = 0;
598    m_Chan = s3d_CDrvGfxEng::AttrChan_BoneSubscr;
599    m_Slot = 0;
600}
601
602///////////////////////////////////////////////////////////////////////////////
603
604S3D_SYS_INLINE
605s3d_CDrvD3d9VertBufDesc::s3d_CDrvD3d9VertBufDesc()
606{
607    Reset();
608}
609
610S3D_SYS_INLINE
611void s3d_CDrvD3d9VertBufDesc::Reset()
612{
613    m_PointAttr = 0;
614    m_ColorAlphaAttr = 0;
615    m_NormalAttr = 0;
616    m_BoneWghAttr = 0;
617    m_BoneSubscrAttr = 0;
618    int iTex = 0;
619    for(iTex = 0; iTex < S3D_DRV_D3D9_MAX_ATTR_CNT; iTex++)
620        m_TexAttrArray[iTex] = 0;
621
622    m_VertElemCnt = 0;
623    s3d_SysMemset(m_VertElemArray, 0, S3D_SYS_SIZEOFS(m_VertElemArray));
624    m_VertSize = 0;
625    m_VertBufFmtDecl = 0;
626}
627
628///////////////////////////////////////////////////////////////////////////////
629
630S3D_SYS_INLINE
631s3d_CDrvD3d9BufMgrVertBuf::s3d_CDrvD3d9BufMgrVertBuf()
632{
633    Reset();
634}
635
636S3D_SYS_INLINE
637void s3d_CDrvD3d9BufMgrVertBuf::Reset()
638{
639    m_VertBuf = 0;
640    m_UsedSize = 0;
641}
642
643///////////////////////////////////////////////////////////////////////////////
644
645S3D_SYS_INLINE
646const s3d_CDrvD3d9VertBuf &s3d_CDrvD3d9BufMgr::GetVertBufDummyBlendWghIdx()
647        const
648{
649    return m_VertBufDummyWghIdx.m_VertBuf;
650}
651 
652///////////////////////////////////////////////////////////////////////////////
653
654#endif
Note: See TracBrowser for help on using the repository browser.